[squeak-dev] The Trunk: Collections-ul.955.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Sep 3 14:19:49 UTC 2021
Levente Uzonyi uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.955.mcz
==================== Summary ====================
Name: Collections-ul.955
Author: ul
Time: 3 September 2021, 3:44:11.962377 pm
UUID: 1da522b7-35ee-4391-8036-93274b292972
Ancestors: Collections-dtl.954
- significantly speed up WriteStream>>nextChunkPut:
- apply the same pattern to String>>storeOn:. In this case the speedup depends on the input string. But for the most common cases it should be faster.
=============== Diff against Collections-dtl.954 ===============
Item was changed:
----- Method: String>>storeOn: (in category 'printing') -----
storeOn: aStream
"Print inside string quotes, doubling embedded quotes."
+
+ | start matchIndex |
- | x |
aStream nextPut: $'.
+ start := 1.
+ [ (matchIndex := self indexOf: $' startingAt: start) = 0 ] whileFalse: [
+ aStream
+ next: matchIndex - start + 1 putAll: self startingAt: start;
+ nextPut: $'.
+ start := matchIndex + 1 ].
+ aStream
+ next: self size - start + 1 putAll: self startingAt: start;
+ nextPut: $'!
- 1 to: self size do:
- [:i |
- aStream nextPut: (x := self at: i).
- x = $' ifTrue: [aStream nextPut: x]].
- aStream nextPut: $'!
Item was changed:
----- Method: WriteStream>>nextChunkPut: (in category 'fileIn/Out') -----
nextChunkPut: aString
"Append the argument, aString, to the receiver, doubling embedded terminators."
+ | start matchIndex |
+ start := 1.
+ [ (matchIndex := aString indexOf: $!! startingAt: start) = 0 ] whileFalse: [
+ self
+ next: matchIndex - start + 1 putAll: aString startingAt: start;
+ nextPut: $!!.
+ start := matchIndex + 1 ].
+ self next: aString size - start + 1 putAll: aString startingAt: start.
- | i remainder terminator |
- terminator := $!!.
- remainder := aString.
- [(i := remainder indexOf: terminator) = 0] whileFalse:
- [self nextPutAll: (remainder copyFrom: 1 to: i).
- self nextPut: terminator. "double imbedded terminators"
- remainder := remainder copyFrom: i+1 to: remainder size].
- self nextPutAll: remainder.
aString includesUnifiedCharacter ifTrue: [
+ self nextPutAll: '!!]lang['.
+ aString writeLeadingCharRunsOn: self ].
+ self nextPut: $!!
- self nextPut: terminator.
- self nextPutAll: ']lang['.
- aString writeLeadingCharRunsOn: self.
- ].
- self nextPut: terminator.
!
More information about the Squeak-dev
mailing list
|