Skip to content

[String] Grapheme fast paths for punctuation: 5-8x speedup. #10648

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 28, 2017

Conversation

milseman
Copy link
Member

Many strings use non-sub-300 punctuation characters (e.g. unicode
hyphen, CJK quotes, etc). This can cause switching between fast and
slow paths for grapheme breaking. Add in fast-paths for general
punctuation characters and CJK punctuation and symbol characters.

This results in about a 5-8x speedup for heavily (unicode) punctuated
Latiny and CJKy workloads.

Many strings use non-sub-300 punctuation characters (e.g. unicode
hyphen, CJK quotes, etc). This can cause switching between fast and
slow paths for grapheme breaking. Add in fast-paths for general
punctuation characters and CJK punctuation and symbol characters.

This results in about a 5-8x speedup for heavily (unicode) punctuated
Latiny and CJKy workloads.
@milseman milseman force-pushed the unicode_punk_shoe_a_shun branch from 056567b to bd5189c Compare June 28, 2017 02:22
@milseman
Copy link
Member Author

@swift-ci please test

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - bd5189c
Test requested by - @milseman

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - bd5189c
Test requested by - @milseman

@milseman
Copy link
Member Author

@shahmishal Bots are having issues:
19:41:38 Caused: java.io.IOException: Backing channel 'macOS-30' is disconnected.

@milseman
Copy link
Member Author

@swift-ci please smoke test

@milseman
Copy link
Member Author

@swift-ci please benchmark

Copy link
Collaborator

@xwu xwu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: the TODO comment here and the one above about CJK punctuation can go now, yes?

@milseman
Copy link
Member Author

milseman commented Jun 28, 2017

Yup

edit: I'll wait until after I get some testing / benchmarking results, don't want to invalidate the bots with a push.

@shahmishal
Copy link
Member

@shahmishal Bots are having issues:
19:41:38 Caused: java.io.IOException: Backing channel 'macOS-30' is disconnected.

We had network outage.

@swift-ci
Copy link
Contributor

Build comment file:

Build failed before running benchmark.


@milseman
Copy link
Member Author

@swift-ci please test

@milseman
Copy link
Member Author

@swift-ci please smoke benchmark

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - bd5189c
Test requested by - @milseman

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - bd5189c
Test requested by - @milseman

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (5)
TEST OLD NEW DELTA SPEEDUP
SuffixArrayLazy 8 11 +37.5% 0.73x
Integrate 262 284 +8.4% 0.92x
Array2D 2076 2225 +7.2% 0.93x (?)
ObjectiveCBridgeStubFromNSStringRef 143 152 +6.3% 0.94x
Calculator 36 38 +5.6% 0.95x
Improvement (3)
TEST OLD NEW DELTA SPEEDUP
SuffixCountableRangeLazy 11 10 -9.1% 1.10x
SuffixCountableRange 11 10 -9.1% 1.10x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5445 5078 -6.7% 1.07x
No Changes (302)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2951 2955 +0.1% 1.00x (?)
AnyHashableWithAClass 67090 66745 -0.5% 1.01x
ArrayAppend 779 776 -0.4% 1.00x
ArrayAppendArrayOfInt 596 596 +0.0% 1.00x
ArrayAppendAscii 22272 22260 -0.1% 1.00x (?)
ArrayAppendFromGeneric 597 596 -0.2% 1.00x (?)
ArrayAppendGenericStructs 1230 1238 +0.7% 0.99x (?)
ArrayAppendLatin1 42877 42777 -0.2% 1.00x (?)
ArrayAppendLazyMap 1009 1017 +0.8% 0.99x (?)
ArrayAppendOptionals 1221 1227 +0.5% 1.00x (?)
ArrayAppendRepeatCol 836 838 +0.2% 1.00x (?)
ArrayAppendReserved 534 533 -0.2% 1.00x (?)
ArrayAppendSequence 949 947 -0.2% 1.00x (?)
ArrayAppendStrings 13690 13623 -0.5% 1.00x (?)
ArrayAppendToFromGeneric 596 596 +0.0% 1.00x
ArrayAppendToGeneric 597 596 -0.2% 1.00x
ArrayAppendUTF16 41240 41132 -0.3% 1.00x (?)
ArrayInClass 65 62 -4.6% 1.05x (?)
ArrayLiteral 1223 1225 +0.2% 1.00x (?)
ArrayOfGenericPOD 219 219 +0.0% 1.00x
ArrayOfGenericRef 4013 4025 +0.3% 1.00x (?)
ArrayOfPOD 166 166 +0.0% 1.00x
ArrayOfRef 3911 3914 +0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 596 597 +0.2% 1.00x
ArrayPlusEqualFiveElementCollection 4655 4723 +1.5% 0.99x
ArrayPlusEqualSingleElementCollection 777 776 -0.1% 1.00x (?)
ArrayPlusEqualThreeElements 1591 1591 +0.0% 1.00x
ArraySubscript 1511 1503 -0.5% 1.01x (?)
ArrayValueProp 6 6 +0.0% 1.00x
ArrayValueProp2 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ArrayValueProp4 6 6 +0.0% 1.00x
BitCount 144 142 -1.4% 1.01x (?)
ByteSwap 116 116 +0.0% 1.00x
CStringLongAscii 5176 5169 -0.1% 1.00x (?)
CStringLongNonAscii 2297 2333 +1.6% 0.98x
CStringShortAscii 5645 5651 +0.1% 1.00x (?)
CaptureProp 4647 4667 +0.4% 1.00x
CharIndexing_ascii_unicodeScalars 15003 15006 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars_Backwards 14048 14098 +0.4% 1.00x
CharIndexing_chinese_unicodeScalars 11363 11369 +0.1% 1.00x
CharIndexing_chinese_unicodeScalars_Backwards 10665 10629 -0.3% 1.00x
CharIndexing_japanese_unicodeScalars 17958 17962 +0.0% 1.00x
CharIndexing_japanese_unicodeScalars_Backwards 16814 16784 -0.2% 1.00x
CharIndexing_korean_unicodeScalars 14545 14554 +0.1% 1.00x
CharIndexing_korean_unicodeScalars_Backwards 13605 13599 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars 12500 12506 +0.0% 1.00x
CharIndexing_russian_unicodeScalars_Backwards 11696 11744 +0.4% 1.00x
CharIndexing_tweet_unicodeScalars 29558 29557 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 27664 27663 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 81829 82052 +0.3% 1.00x
CharIndexing_utf16_unicodeScalars_Backwards 97628 96472 -1.2% 1.01x
CharIteration_ascii_unicodeScalars 16393 16418 +0.2% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 18949 18950 +0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars 12421 12436 +0.1% 1.00x
CharIteration_chinese_unicodeScalars_Backwards 14345 14341 -0.0% 1.00x
CharIteration_japanese_unicodeScalars 19635 19658 +0.1% 1.00x
CharIteration_japanese_unicodeScalars_Backwards 22688 22692 +0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 15907 15911 +0.0% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 18368 18371 +0.0% 1.00x (?)
CharIteration_russian_unicodeScalars 13673 13683 +0.1% 1.00x
CharIteration_russian_unicodeScalars_Backwards 15776 15780 +0.0% 1.00x
CharIteration_tweet_unicodeScalars 32296 32390 +0.3% 1.00x
CharIteration_tweet_unicodeScalars_Backwards 37412 37479 +0.2% 1.00x (?)
CharIteration_utf16_unicodeScalars 91705 92686 +1.1% 0.99x
CharIteration_utf16_unicodeScalars_Backwards 135919 136424 +0.4% 1.00x
CharacterLiteralsLarge 5870 5874 +0.1% 1.00x (?)
CharacterLiteralsSmall 404 403 -0.2% 1.00x
Chars 947 947 +0.0% 1.00x
ClassArrayGetter 14 14 +0.0% 1.00x
DeadArray 186 186 +0.0% 1.00x
Dictionary 559 560 +0.2% 1.00x (?)
Dictionary2 1812 1809 -0.2% 1.00x
Dictionary2OfObjects 3312 3286 -0.8% 1.01x (?)
Dictionary3 441 440 -0.2% 1.00x (?)
Dictionary3OfObjects 886 887 +0.1% 1.00x (?)
DictionaryBridge 2667 2704 +1.4% 0.99x (?)
DictionaryGroup 133 138 +3.8% 0.96x (?)
DictionaryGroupOfObjects 1640 1645 +0.3% 1.00x
DictionaryLiteral 1479 1478 -0.1% 1.00x (?)
DictionaryOfObjects 2323 2321 -0.1% 1.00x (?)
DictionaryRemove 2416 2502 +3.6% 0.97x
DictionaryRemoveOfObjects 23280 23273 -0.0% 1.00x (?)
DictionarySwap 436 436 +0.0% 1.00x
DictionarySwapOfObjects 6992 6904 -1.3% 1.01x
DropFirstAnyCollection 56 56 +0.0% 1.00x
DropFirstAnyCollectionLazy 45121 44798 -0.7% 1.01x (?)
DropFirstAnySeqCRangeIter 26484 26520 +0.1% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 26491 26521 +0.1% 1.00x (?)
DropFirstAnySeqCntRange 50 50 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 50 50 +0.0% 1.00x
DropFirstAnySequence 5904 5903 -0.0% 1.00x (?)
DropFirstAnySequenceLazy 5908 5892 -0.3% 1.00x (?)
DropFirstArray 24 24 +0.0% 1.00x
DropFirstArrayLazy 24 24 +0.0% 1.00x
DropFirstCountableRange 32 32 +0.0% 1.00x
DropFirstCountableRangeLazy 32 32 +0.0% 1.00x
DropFirstSequence 2094 2093 -0.0% 1.00x
DropFirstSequenceLazy 2118 2118 +0.0% 1.00x
DropLastAnyCollection 22 22 +0.0% 1.00x
DropLastAnyCollectionLazy 15011 14989 -0.1% 1.00x (?)
DropLastAnySeqCRangeIter 4575 4575 +0.0% 1.00x
DropLastAnySeqCRangeIterLazy 4584 4595 +0.2% 1.00x (?)
DropLastAnySeqCntRange 16 16 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 16 16 +0.0% 1.00x
DropLastAnySequence 6681 6732 +0.8% 0.99x (?)
DropLastAnySequenceLazy 6606 6546 -0.9% 1.01x
DropLastArray 8 8 +0.0% 1.00x
DropLastArrayLazy 8 8 +0.0% 1.00x
DropLastCountableRange 10 10 +0.0% 1.00x
DropLastCountableRangeLazy 10 10 +0.0% 1.00x
DropLastSequence 603 603 +0.0% 1.00x
DropLastSequenceLazy 604 602 -0.3% 1.00x (?)
DropWhileAnyCollection 70 70 +0.0% 1.00x
DropWhileAnyCollectionLazy 103 103 +0.0% 1.00x
DropWhileAnySeqCRangeIter 21639 21551 -0.4% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 103 103 +0.0% 1.00x
DropWhileAnySeqCntRange 64 64 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 103 103 +0.0% 1.00x
DropWhileAnySequence 6558 6561 +0.0% 1.00x (?)
DropWhileAnySequenceLazy 2032 2032 +0.0% 1.00x
DropWhileArray 37 37 +0.0% 1.00x
DropWhileArrayLazy 78 78 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 68 68 +0.0% 1.00x
DropWhileSequence 1548 1548 +0.0% 1.00x
DropWhileSequenceLazy 65 65 +0.0% 1.00x
EqualStringSubstring 385 390 +1.3% 0.99x
EqualSubstringString 382 384 +0.5% 0.99x
EqualSubstringSubstring 385 383 -0.5% 1.01x
EqualSubstringSubstringGenericEquatable 389 387 -0.5% 1.01x
ErrorHandling 2869 2913 +1.5% 0.98x (?)
Hanoi 3676 3649 -0.7% 1.01x
HashTest 1658 1664 +0.4% 1.00x (?)
Histogram 303 304 +0.3% 1.00x
IterateData 760 759 -0.1% 1.00x
Join 389 376 -3.3% 1.03x (?)
LazilyFilteredArrays 64932 64798 -0.2% 1.00x (?)
LazilyFilteredRange 3894 3897 +0.1% 1.00x
LessSubstringSubstring 384 383 -0.3% 1.00x
LessSubstringSubstringGenericComparable 385 385 +0.0% 1.00x
LinkedList 7157 7158 +0.0% 1.00x (?)
MapReduce 303 305 +0.7% 0.99x
MapReduceAnyCollection 333 334 +0.3% 1.00x
MapReduceAnyCollectionShort 2008 1999 -0.4% 1.00x
MapReduceClass 3044 3047 +0.1% 1.00x (?)
MapReduceClassShort 4601 4550 -1.1% 1.01x (?)
MapReduceLazyCollection 15 15 +0.0% 1.00x
MapReduceLazyCollectionShort 44 44 +0.0% 1.00x
MapReduceLazySequence 90 90 +0.0% 1.00x
MapReduceSequence 474 471 -0.6% 1.01x
MapReduceShort 1902 1899 -0.2% 1.00x (?)
MapReduceShortString 19 19 +0.0% 1.00x
MapReduceString 81 81 +0.0% 1.00x
Memset 235 234 -0.4% 1.00x
MonteCarloE 10278 10273 -0.0% 1.00x
MonteCarloPi 44079 44083 +0.0% 1.00x (?)
NSDictionaryCastToSwift 5468 5531 +1.2% 0.99x (?)
NSError 289 290 +0.3% 1.00x
NSStringConversion 764 785 +2.7% 0.97x
NopDeinit 30463 30428 -0.1% 1.00x
ObjectAllocation 178 179 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObject 25396 24852 -2.1% 1.02x
ObjectiveCBridgeFromNSArrayAnyObjectForced 6168 6150 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 51683 51822 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 45676 45456 -0.5% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 118218 118497 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 107440 107178 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 116082 113356 -2.3% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObject 64509 64628 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4190 4200 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 78346 79044 +0.9% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 79708 78532 -1.5% 1.01x (?)
ObjectiveCBridgeFromNSString 2204 2154 -2.3% 1.02x (?)
ObjectiveCBridgeFromNSStringForced 2959 2989 +1.0% 0.99x (?)
ObjectiveCBridgeStubDataAppend 3764 3733 -0.8% 1.01x (?)
ObjectiveCBridgeStubDateAccess 182 181 -0.5% 1.01x
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 31048 31492 +1.4% 0.99x (?)
ObjectiveCBridgeStubFromNSDate 3615 3618 +0.1% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4122 4070 -1.3% 1.01x
ObjectiveCBridgeStubFromNSString 1099 1108 +0.8% 0.99x
ObjectiveCBridgeStubNSDataAppend 2390 2437 +2.0% 0.98x (?)
ObjectiveCBridgeStubNSDateMutationRef 12745 12610 -1.1% 1.01x (?)
ObjectiveCBridgeStubNSDateRefAccess 339 347 +2.4% 0.98x (?)
ObjectiveCBridgeStubToArrayOfNSString 28881 28876 -0.0% 1.00x (?)
ObjectiveCBridgeStubToNSDate 14978 14794 -1.2% 1.01x (?)
ObjectiveCBridgeStubToNSDateRef 3235 3283 +1.5% 0.99x (?)
ObjectiveCBridgeStubToNSString 1516 1521 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 108 108 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 225222 218950 -2.8% 1.03x (?)
ObjectiveCBridgeStubURLAppendPathRef 219869 222598 +1.2% 0.99x
ObjectiveCBridgeToNSArray 28756 28758 +0.0% 1.00x (?)
ObjectiveCBridgeToNSDictionary 46175 46080 -0.2% 1.00x (?)
ObjectiveCBridgeToNSSet 39987 40625 +1.6% 0.98x (?)
ObjectiveCBridgeToNSString 1276 1274 -0.2% 1.00x
ObserverClosure 2304 2298 -0.3% 1.00x (?)
ObserverForwarderStruct 1148 1160 +1.0% 0.99x (?)
ObserverPartiallyAppliedMethod 3787 3774 -0.3% 1.00x (?)
ObserverUnappliedMethod 2695 2784 +3.3% 0.97x
OpenClose 51 51 +0.0% 1.00x
Phonebook 6526 6498 -0.4% 1.00x
PolymorphicCalls 22 22 +0.0% 1.00x
PopFrontArray 1203 1200 -0.2% 1.00x (?)
PopFrontArrayGeneric 1200 1201 +0.1% 1.00x (?)
PopFrontUnsafePointer 9532 9513 -0.2% 1.00x
PrefixAnyCollection 56 56 +0.0% 1.00x
PrefixAnyCollectionLazy 45124 44965 -0.4% 1.00x
PrefixAnySeqCRangeIter 21022 20929 -0.4% 1.00x
PrefixAnySeqCRangeIterLazy 20981 20871 -0.5% 1.01x (?)
PrefixAnySeqCntRange 50 50 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 50 50 +0.0% 1.00x
PrefixAnySequence 5221 5217 -0.1% 1.00x (?)
PrefixAnySequenceLazy 5204 5218 +0.3% 1.00x
PrefixArray 25 24 -4.0% 1.04x
PrefixArrayLazy 25 25 +0.0% 1.00x
PrefixCountableRange 32 32 +0.0% 1.00x
PrefixCountableRangeLazy 32 32 +0.0% 1.00x
PrefixSequence 1571 1571 +0.0% 1.00x
PrefixSequenceLazy 1515 1515 +0.0% 1.00x
PrefixWhileAnyCollection 96 96 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 75 75 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 12407 12403 -0.0% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 75 75 +0.0% 1.00x
PrefixWhileAnySeqCntRange 90 90 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 75 75 +0.0% 1.00x
PrefixWhileAnySequence 14001 13897 -0.7% 1.01x (?)
PrefixWhileAnySequenceLazy 1492 1492 +0.0% 1.00x
PrefixWhileArray 62 62 +0.0% 1.00x
PrefixWhileArrayLazy 49 49 +0.0% 1.00x
PrefixWhileCountableRange 36 36 +0.0% 1.00x
PrefixWhileCountableRangeLazy 32 32 +0.0% 1.00x
PrefixWhileSequence 317 318 +0.3% 1.00x
PrefixWhileSequenceLazy 28 28 +0.0% 1.00x
Prims 804 782 -2.7% 1.03x
ProtocolDispatch 3031 3031 +0.0% 1.00x
ProtocolDispatch2 171 170 -0.6% 1.01x
RC4 159 159 +0.0% 1.00x
RGBHistogram 2351 2374 +1.0% 0.99x (?)
RGBHistogramOfObjects 24376 24374 -0.0% 1.00x (?)
RangeAssignment 307 309 +0.7% 0.99x (?)
RecursiveOwnedParameter 2323 2330 +0.3% 1.00x
ReversedArray 50 51 +2.0% 0.98x (?)
ReversedBidirectional 29050 28981 -0.2% 1.00x
ReversedDictionary 125 125 +0.0% 1.00x
SetExclusiveOr 3031 3099 +2.2% 0.98x
SetExclusiveOr_OfObjects 9549 9692 +1.5% 0.99x
SetIntersect 297 296 -0.3% 1.00x
SetIntersect_OfObjects 1723 1719 -0.2% 1.00x (?)
SetIsSubsetOf 292 292 +0.0% 1.00x
SetIsSubsetOf_OfObjects 359 359 +0.0% 1.00x
SetUnion 2748 2774 +0.9% 0.99x (?)
SetUnion_OfObjects 8138 8104 -0.4% 1.00x
SevenBoom 1469 1466 -0.2% 1.00x (?)
Sim2DArray 276 276 +0.0% 1.00x
SortLargeExistentials 8010 7934 -0.9% 1.01x
SortLettersInPlace 1145 1141 -0.3% 1.00x
SortSortedStrings 889 883 -0.7% 1.01x
SortStrings 1692 1686 -0.4% 1.00x
SortStringsUnicode 7903 7953 +0.6% 0.99x
StackPromo 22507 22380 -0.6% 1.01x
StaticArray 18 18 +0.0% 1.00x
StrComplexWalk 720 720 +0.0% 1.00x
StrToInt 2044 2037 -0.3% 1.00x (?)
StringAdder 3474 3482 +0.2% 1.00x (?)
StringBuilder 1035 1030 -0.5% 1.00x (?)
StringBuilderLong 920 943 +2.5% 0.98x (?)
StringEdits 105422 105364 -0.1% 1.00x (?)
StringEqualPointerComparison 333 333 +0.0% 1.00x
StringFromLongWholeSubstring 10256 10498 +2.4% 0.98x
StringFromLongWholeSubstringGeneric 22 22 +0.0% 1.00x
StringHasPrefix 33 33 +0.0% 1.00x
StringHasPrefixUnicode 14389 14347 -0.3% 1.00x (?)
StringHasSuffix 33 33 +0.0% 1.00x
StringHasSuffixUnicode 61274 61598 +0.5% 0.99x
StringInterpolation 10786 10804 +0.2% 1.00x (?)
StringMatch 7465 7518 +0.7% 0.99x
StringUTF16Builder 1888 1892 +0.2% 1.00x (?)
StringWalk 1276 1273 -0.2% 1.00x
StringWithCString 68694 69012 +0.5% 1.00x (?)
SubstringComparable 1536 1540 +0.3% 1.00x
SubstringEqualString 1428 1457 +2.0% 0.98x
SubstringEquatable 3383 3380 -0.1% 1.00x (?)
SubstringFromLongString 109 110 +0.9% 0.99x
SubstringFromLongStringGeneric 176 183 +4.0% 0.96x (?)
SuffixAnyCollection 22 22 +0.0% 1.00x
SuffixAnyCollectionLazy 14998 14967 -0.2% 1.00x (?)
SuffixAnySeqCRangeIter 4978 4912 -1.3% 1.01x
SuffixAnySeqCRangeIterLazy 5036 5096 +1.2% 0.99x (?)
SuffixAnySeqCntRange 16 16 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 16 16 +0.0% 1.00x
SuffixAnySequence 6805 6745 -0.9% 1.01x (?)
SuffixAnySequenceLazy 6622 6645 +0.3% 1.00x (?)
SuffixArray 8 8 +0.0% 1.00x
SuffixSequence 4443 4469 +0.6% 0.99x (?)
SuffixSequenceLazy 4455 4456 +0.0% 1.00x (?)
SuperChars 81080 83308 +2.7% 0.97x
TwoSum 968 972 +0.4% 1.00x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 254 254 +0.0% 1.00x
Walsh 352 347 -1.4% 1.01x
XorLoop 347 347 +0.0% 1.00x
Added (8)
TEST MIN MAX MEAN MAX_RSS
CharIndexing_punctuatedJapanese_unicodeScalars 2731 2732 2732 10506240
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2586 2636 2603 10518528
CharIndexing_punctuated_unicodeScalars 3414 3550 3459 10506240
CharIndexing_punctuated_unicodeScalars_Backwards 3237 3240 3238 10518528
CharIteration_punctuatedJapanese_unicodeScalars 2974 2975 2975 10518528
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 3424 3426 3425 10518528
CharIteration_punctuated_unicodeScalars 3724 3725 3724 10518528
CharIteration_punctuated_unicodeScalars_Backwards 4261 4268 4264 10526720

Unoptimized (Onone)

Regression (2)
TEST OLD NEW DELTA SPEEDUP
BitCount 1581 1824 +15.4% 0.87x
CharIndexing_russian_unicodeScalars_Backwards 441884 469025 +6.1% 0.94x
Improvement (7)
TEST OLD NEW DELTA SPEEDUP
CharIndexing_chinese_unicodeScalars 383787 359302 -6.4% 1.07x
CharIteration_japanese_unicodeScalars 231120 217725 -5.8% 1.06x
CharIndexing_japanese_unicodeScalars 604751 570529 -5.7% 1.06x
CharIteration_chinese_unicodeScalars 145536 137344 -5.6% 1.06x
ArrayAppendLatin1 88580 84127 -5.0% 1.05x
CharIndexing_utf16_unicodeScalars 568827 540843 -4.9% 1.05x
CharIndexing_tweet_unicodeScalars 998316 950701 -4.8% 1.05x
No Changes (301)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4929 4961 +0.6% 0.99x (?)
AnyHashableWithAClass 84337 83884 -0.5% 1.01x
Array2D 606622 607091 +0.1% 1.00x
ArrayAppend 3779 3669 -2.9% 1.03x
ArrayAppendArrayOfInt 650 650 +0.0% 1.00x
ArrayAppendAscii 63198 61281 -3.0% 1.03x (?)
ArrayAppendFromGeneric 653 652 -0.2% 1.00x
ArrayAppendGenericStructs 1323 1290 -2.5% 1.03x (?)
ArrayAppendLazyMap 210215 211502 +0.6% 0.99x
ArrayAppendOptionals 1291 1299 +0.6% 0.99x (?)
ArrayAppendRepeatCol 213608 213620 +0.0% 1.00x (?)
ArrayAppendReserved 3438 3544 +3.1% 0.97x
ArrayAppendSequence 77441 77347 -0.1% 1.00x
ArrayAppendStrings 13788 13702 -0.6% 1.01x (?)
ArrayAppendToFromGeneric 652 653 +0.2% 1.00x (?)
ArrayAppendToGeneric 653 653 +0.0% 1.00x
ArrayAppendUTF16 85666 83481 -2.6% 1.03x
ArrayInClass 6694 6685 -0.1% 1.00x (?)
ArrayLiteral 1739 1739 +0.0% 1.00x
ArrayOfGenericPOD 3002 3001 -0.0% 1.00x (?)
ArrayOfGenericRef 10243 10178 -0.6% 1.01x (?)
ArrayOfPOD 1892 1832 -3.2% 1.03x
ArrayOfRef 9204 9170 -0.4% 1.00x
ArrayPlusEqualArrayOfInt 651 650 -0.2% 1.00x (?)
ArrayPlusEqualFiveElementCollection 292823 295410 +0.9% 0.99x (?)
ArrayPlusEqualSingleElementCollection 291185 290504 -0.2% 1.00x (?)
ArrayPlusEqualThreeElements 10380 10317 -0.6% 1.01x (?)
ArraySubscript 4160 4166 +0.1% 1.00x (?)
ArrayValueProp 3527 3527 +0.0% 1.00x
ArrayValueProp2 18322 18215 -0.6% 1.01x (?)
ArrayValueProp3 3920 3917 -0.1% 1.00x (?)
ArrayValueProp4 3814 3851 +1.0% 0.99x
ByteSwap 4151 4250 +2.4% 0.98x
CStringLongAscii 5317 5320 +0.1% 1.00x (?)
CStringLongNonAscii 2514 2546 +1.3% 0.99x
CStringShortAscii 9388 9319 -0.7% 1.01x
Calculator 1159 1191 +2.8% 0.97x (?)
CaptureProp 109887 107788 -1.9% 1.02x
CharIndexing_ascii_unicodeScalars 507369 490587 -3.3% 1.03x
CharIndexing_ascii_unicodeScalars_Backwards 530495 548007 +3.3% 0.97x (?)
CharIndexing_chinese_unicodeScalars_Backwards 411932 419783 +1.9% 0.98x
CharIndexing_japanese_unicodeScalars_Backwards 647572 666474 +2.9% 0.97x
CharIndexing_korean_unicodeScalars 487673 469388 -3.7% 1.04x
CharIndexing_korean_unicodeScalars_Backwards 524285 530357 +1.2% 0.99x
CharIndexing_russian_unicodeScalars 418232 404937 -3.2% 1.03x
CharIndexing_tweet_unicodeScalars_Backwards 1062544 1064130 +0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 596028 605297 +1.6% 0.98x
CharIteration_ascii_unicodeScalars 181923 181804 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 330220 328091 -0.6% 1.01x (?)
CharIteration_chinese_unicodeScalars_Backwards 257015 248841 -3.2% 1.03x (?)
CharIteration_japanese_unicodeScalars_Backwards 406855 402132 -1.2% 1.01x
CharIteration_korean_unicodeScalars 175394 175781 +0.2% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 318533 319285 +0.2% 1.00x (?)
CharIteration_russian_unicodeScalars 151069 151457 +0.3% 1.00x
CharIteration_russian_unicodeScalars_Backwards 273531 276878 +1.2% 0.99x (?)
CharIteration_tweet_unicodeScalars 358213 359241 +0.3% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 659482 655040 -0.7% 1.01x
CharIteration_utf16_unicodeScalars 215673 215733 +0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 414657 422780 +2.0% 0.98x (?)
CharacterLiteralsLarge 6073 6092 +0.3% 1.00x
CharacterLiteralsSmall 664 643 -3.2% 1.03x
Chars 48951 48893 -0.1% 1.00x
ClassArrayGetter 1014 1014 +0.0% 1.00x
DeadArray 113649 113312 -0.3% 1.00x (?)
Dictionary 2985 3017 +1.1% 0.99x (?)
Dictionary2 3456 3455 -0.0% 1.00x (?)
Dictionary2OfObjects 6202 6146 -0.9% 1.01x (?)
Dictionary3 1312 1293 -1.4% 1.01x
Dictionary3OfObjects 2356 2367 +0.5% 1.00x (?)
DictionaryBridge 2816 2794 -0.8% 1.01x (?)
DictionaryGroup 4933 4997 +1.3% 0.99x
DictionaryGroupOfObjects 8102 8086 -0.2% 1.00x (?)
DictionaryLiteral 8191 8256 +0.8% 0.99x (?)
DictionaryOfObjects 6692 6670 -0.3% 1.00x (?)
DictionaryRemove 21370 21073 -1.4% 1.01x
DictionaryRemoveOfObjects 60732 60539 -0.3% 1.00x (?)
DictionarySwap 5412 5484 +1.3% 0.99x
DictionarySwapOfObjects 23949 23509 -1.8% 1.02x
DropFirstAnyCollection 19271 19494 +1.2% 0.99x
DropFirstAnyCollectionLazy 136899 136391 -0.4% 1.00x (?)
DropFirstAnySeqCRangeIter 29197 28991 -0.7% 1.01x
DropFirstAnySeqCRangeIterLazy 29230 29336 +0.4% 1.00x
DropFirstAnySeqCntRange 19381 19272 -0.6% 1.01x
DropFirstAnySeqCntRangeLazy 19596 19242 -1.8% 1.02x
DropFirstAnySequence 12850 12987 +1.1% 0.99x
DropFirstAnySequenceLazy 12955 13172 +1.7% 0.98x
DropFirstArray 6231 6161 -1.1% 1.01x
DropFirstArrayLazy 44608 44535 -0.2% 1.00x (?)
DropFirstCountableRange 340 339 -0.3% 1.00x
DropFirstCountableRangeLazy 38768 38558 -0.5% 1.01x (?)
DropFirstSequence 11805 11798 -0.1% 1.00x
DropFirstSequenceLazy 11740 11876 +1.2% 0.99x
DropLastAnyCollection 6454 6517 +1.0% 0.99x
DropLastAnyCollectionLazy 45739 45909 +0.4% 1.00x (?)
DropLastAnySeqCRangeIter 43904 43709 -0.4% 1.00x
DropLastAnySeqCRangeIterLazy 44112 43753 -0.8% 1.01x (?)
DropLastAnySeqCntRange 6486 6441 -0.7% 1.01x
DropLastAnySeqCntRangeLazy 6522 6435 -1.3% 1.01x (?)
DropLastAnySequence 29051 28967 -0.3% 1.00x (?)
DropLastAnySequenceLazy 29226 29645 +1.4% 0.99x (?)
DropLastArray 2062 2066 +0.2% 1.00x (?)
DropLastArrayLazy 14883 14848 -0.2% 1.00x
DropLastCountableRange 118 118 +0.0% 1.00x
DropLastCountableRangeLazy 13207 12823 -2.9% 1.03x
DropLastSequence 28710 29070 +1.3% 0.99x
DropLastSequenceLazy 28718 28723 +0.0% 1.00x (?)
DropWhileAnyCollection 25197 24975 -0.9% 1.01x
DropWhileAnyCollectionLazy 27525 27419 -0.4% 1.00x
DropWhileAnySeqCRangeIter 31289 31673 +1.2% 0.99x
DropWhileAnySeqCRangeIterLazy 27259 27202 -0.2% 1.00x (?)
DropWhileAnySeqCntRange 24997 24979 -0.1% 1.00x
DropWhileAnySeqCntRangeLazy 27333 27566 +0.9% 0.99x
DropWhileAnySequence 15270 15091 -1.2% 1.01x
DropWhileAnySequenceLazy 12330 12367 +0.3% 1.00x
DropWhileArray 9812 9764 -0.5% 1.00x
DropWhileArrayLazy 16760 16764 +0.0% 1.00x (?)
DropWhileCountableRange 6116 6103 -0.2% 1.00x (?)
DropWhileCountableRangeLazy 26216 26172 -0.2% 1.00x
DropWhileSequence 14128 14311 +1.3% 0.99x
DropWhileSequenceLazy 11198 11539 +3.0% 0.97x
EqualStringSubstring 657 659 +0.3% 1.00x (?)
EqualSubstringString 655 659 +0.6% 0.99x (?)
EqualSubstringSubstring 762 766 +0.5% 0.99x
EqualSubstringSubstringGenericEquatable 414 414 +0.0% 1.00x
ErrorHandling 6923 6759 -2.4% 1.02x
Hanoi 18553 18605 +0.3% 1.00x (?)
HashTest 18449 18276 -0.9% 1.01x
Histogram 8752 8755 +0.0% 1.00x (?)
Integrate 745 734 -1.5% 1.01x
IterateData 12953 12646 -2.4% 1.02x
Join 1204 1185 -1.6% 1.02x
LazilyFilteredArrays 1703069 1699858 -0.2% 1.00x (?)
LazilyFilteredRange 670747 670330 -0.1% 1.00x (?)
LessSubstringSubstring 765 770 +0.7% 0.99x
LessSubstringSubstringGenericComparable 433 437 +0.9% 0.99x
LinkedList 42856 42626 -0.5% 1.01x
MapReduce 37390 37393 +0.0% 1.00x (?)
MapReduceAnyCollection 37306 37537 +0.6% 0.99x
MapReduceAnyCollectionShort 50071 49748 -0.6% 1.01x
MapReduceClass 43098 42765 -0.8% 1.01x
MapReduceClassShort 53985 53887 -0.2% 1.00x (?)
MapReduceLazyCollection 32504 32531 +0.1% 1.00x (?)
MapReduceLazyCollectionShort 43835 44061 +0.5% 0.99x (?)
MapReduceLazySequence 25204 26172 +3.8% 0.96x
MapReduceSequence 40962 41307 +0.8% 0.99x
MapReduceShort 49269 49251 -0.0% 1.00x (?)
MapReduceShortString 271 276 +1.8% 0.98x
MapReduceString 2548 2555 +0.3% 1.00x (?)
Memset 45720 45689 -0.1% 1.00x (?)
MonteCarloE 138657 133146 -4.0% 1.04x
MonteCarloPi 52511 52683 +0.3% 1.00x
NSDictionaryCastToSwift 6658 6665 +0.1% 1.00x (?)
NSError 726 699 -3.7% 1.04x
NSStringConversion 788 814 +3.3% 0.97x
NopDeinit 193137 189708 -1.8% 1.02x
ObjectAllocation 1450 1463 +0.9% 0.99x
ObjectiveCBridgeFromNSArrayAnyObject 26336 26534 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 9613 9863 +2.6% 0.97x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 52812 52495 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 46516 46409 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 121655 122613 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7292 7460 +2.3% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 111551 111596 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 116775 116191 -0.5% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObject 69178 69231 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7511 7667 +2.1% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 84790 84147 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 82127 82036 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSString 5252 5265 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 3317 3349 +1.0% 0.99x
ObjectiveCBridgeStubDataAppend 3788 3739 -1.3% 1.01x (?)
ObjectiveCBridgeStubDateAccess 1030 1027 -0.3% 1.00x
ObjectiveCBridgeStubDateMutation 515 515 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 31539 31682 +0.5% 1.00x (?)
ObjectiveCBridgeStubFromNSDate 3804 3936 +3.5% 0.97x
ObjectiveCBridgeStubFromNSDateRef 4312 4442 +3.0% 0.97x
ObjectiveCBridgeStubFromNSString 1127 1130 +0.3% 1.00x (?)
ObjectiveCBridgeStubFromNSStringRef 176 176 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2718 2796 +2.9% 0.97x (?)
ObjectiveCBridgeStubNSDateMutationRef 15892 15870 -0.1% 1.00x (?)
ObjectiveCBridgeStubNSDateRefAccess 1232 1207 -2.0% 1.02x
ObjectiveCBridgeStubToArrayOfNSString 29201 29117 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSDate 15290 15026 -1.7% 1.02x
ObjectiveCBridgeStubToNSDateRef 3343 3345 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSString 1560 1561 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 152 148 -2.6% 1.03x
ObjectiveCBridgeStubURLAppendPath 220285 221616 +0.6% 0.99x (?)
ObjectiveCBridgeStubURLAppendPathRef 223353 219000 -1.9% 1.02x (?)
ObjectiveCBridgeToNSArray 29311 28507 -2.7% 1.03x (?)
ObjectiveCBridgeToNSDictionary 46972 46576 -0.8% 1.01x (?)
ObjectiveCBridgeToNSSet 40743 40818 +0.2% 1.00x
ObjectiveCBridgeToNSString 1300 1305 +0.4% 1.00x
ObserverClosure 6815 6806 -0.1% 1.00x (?)
ObserverForwarderStruct 4833 4844 +0.2% 1.00x (?)
ObserverPartiallyAppliedMethod 8306 8275 -0.4% 1.00x (?)
ObserverUnappliedMethod 8669 8695 +0.3% 1.00x (?)
OpenClose 416 397 -4.6% 1.05x
Phonebook 21665 21668 +0.0% 1.00x (?)
PolymorphicCalls 5467 5550 +1.5% 0.99x (?)
PopFrontArray 7580 7565 -0.2% 1.00x (?)
PopFrontArrayGeneric 6510 6557 +0.7% 0.99x (?)
PopFrontUnsafePointer 98725 97151 -1.6% 1.02x (?)
PrefixAnyCollection 19301 19500 +1.0% 0.99x
PrefixAnyCollectionLazy 136162 136380 +0.2% 1.00x (?)
PrefixAnySeqCRangeIter 23420 23112 -1.3% 1.01x
PrefixAnySeqCRangeIterLazy 23367 23284 -0.4% 1.00x
PrefixAnySeqCntRange 19403 19311 -0.5% 1.00x
PrefixAnySeqCntRangeLazy 19608 19259 -1.8% 1.02x
PrefixAnySequence 10749 10766 +0.2% 1.00x (?)
PrefixAnySequenceLazy 10766 11107 +3.2% 0.97x
PrefixArray 6224 6177 -0.8% 1.01x (?)
PrefixArrayLazy 44616 44512 -0.2% 1.00x (?)
PrefixCountableRange 339 339 +0.0% 1.00x
PrefixCountableRangeLazy 38772 38526 -0.6% 1.01x
PrefixSequence 9652 9646 -0.1% 1.00x
PrefixSequenceLazy 9647 9671 +0.2% 1.00x (?)
PrefixWhileAnyCollection 36422 36256 -0.5% 1.00x (?)
PrefixWhileAnyCollectionLazy 22721 22410 -1.4% 1.01x (?)
PrefixWhileAnySeqCRangeIter 40365 40729 +0.9% 0.99x
PrefixWhileAnySeqCRangeIterLazy 22569 22616 +0.2% 1.00x
PrefixWhileAnySeqCntRange 36369 36270 -0.3% 1.00x
PrefixWhileAnySeqCntRangeLazy 22749 22782 +0.1% 1.00x (?)
PrefixWhileAnySequence 29560 29586 +0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 11216 11226 +0.1% 1.00x
PrefixWhileArray 16831 16854 +0.1% 1.00x (?)
PrefixWhileArrayLazy 14571 14575 +0.0% 1.00x (?)
PrefixWhileCountableRange 17585 17399 -1.1% 1.01x
PrefixWhileCountableRangeLazy 21782 21653 -0.6% 1.01x
PrefixWhileSequence 28385 28413 +0.1% 1.00x (?)
PrefixWhileSequenceLazy 10494 10384 -1.0% 1.01x
Prims 10149 10153 +0.0% 1.00x (?)
ProtocolDispatch 6961 7133 +2.5% 0.98x
ProtocolDispatch2 490 491 +0.2% 1.00x
RC4 19026 19836 +4.3% 0.96x
RGBHistogram 33727 33884 +0.5% 1.00x (?)
RGBHistogramOfObjects 110284 109951 -0.3% 1.00x (?)
RangeAssignment 5683 5727 +0.8% 0.99x
RecursiveOwnedParameter 11777 11704 -0.6% 1.01x
ReversedArray 45785 44235 -3.4% 1.04x
ReversedBidirectional 76758 75600 -1.5% 1.02x
ReversedDictionary 29708 28496 -4.1% 1.04x
SetExclusiveOr 20686 20907 +1.1% 0.99x
SetExclusiveOr_OfObjects 48901 49298 +0.8% 0.99x
SetIntersect 10254 10287 +0.3% 1.00x
SetIntersect_OfObjects 12435 12360 -0.6% 1.01x
SetIsSubsetOf 1580 1577 -0.2% 1.00x
SetIsSubsetOf_OfObjects 1512 1539 +1.8% 0.98x
SetUnion 11718 11719 +0.0% 1.00x (?)
SetUnion_OfObjects 33987 34085 +0.3% 1.00x
SevenBoom 1596 1593 -0.2% 1.00x (?)
Sim2DArray 30025 30036 +0.0% 1.00x
SortLargeExistentials 17854 17885 +0.2% 1.00x (?)
SortLettersInPlace 3207 3210 +0.1% 1.00x (?)
SortSortedStrings 1415 1415 +0.0% 1.00x
SortStrings 2448 2464 +0.7% 0.99x
SortStringsUnicode 8941 9023 +0.9% 0.99x
StackPromo 99960 102353 +2.4% 0.98x (?)
StaticArray 4657 4550 -2.3% 1.02x
StrComplexWalk 6789 6753 -0.5% 1.01x
StrToInt 101163 101159 -0.0% 1.00x (?)
StringAdder 3744 3718 -0.7% 1.01x (?)
StringBuilder 6997 6931 -0.9% 1.01x (?)
StringBuilderLong 1108 1102 -0.5% 1.01x (?)
StringEdits 377472 383177 +1.5% 0.99x
StringEqualPointerComparison 2536 2454 -3.2% 1.03x
StringFromLongWholeSubstring 10092 10199 +1.1% 0.99x
StringFromLongWholeSubstringGeneric 200 206 +3.0% 0.97x (?)
StringHasPrefix 1770 1740 -1.7% 1.02x
StringHasPrefixUnicode 16160 16320 +1.0% 0.99x
StringHasSuffix 1882 1878 -0.2% 1.00x
StringHasSuffixUnicode 63723 63539 -0.3% 1.00x
StringInterpolation 13743 13819 +0.6% 0.99x (?)
StringMatch 29044 29171 +0.4% 1.00x (?)
StringUTF16Builder 7732 7794 +0.8% 0.99x
StringWalk 12870 13226 +2.8% 0.97x
StringWithCString 68601 68523 -0.1% 1.00x (?)
SubstringComparable 4086 4104 +0.4% 1.00x
SubstringEqualString 6220 6289 +1.1% 0.99x (?)
SubstringEquatable 7986 8088 +1.3% 0.99x
SubstringFromLongString 116 117 +0.9% 0.99x
SubstringFromLongStringGeneric 208 210 +1.0% 0.99x (?)
SuffixAnyCollection 6453 6523 +1.1% 0.99x
SuffixAnyCollectionLazy 45732 45439 -0.6% 1.01x (?)
SuffixAnySeqCRangeIter 41438 41515 +0.2% 1.00x (?)
SuffixAnySeqCRangeIterLazy 41906 41439 -1.1% 1.01x
SuffixAnySeqCntRange 6483 6439 -0.7% 1.01x
SuffixAnySeqCntRangeLazy 6524 6432 -1.4% 1.01x (?)
SuffixAnySequence 26840 26869 +0.1% 1.00x
SuffixAnySequenceLazy 27189 27059 -0.5% 1.00x (?)
SuffixArray 2066 2059 -0.3% 1.00x
SuffixArrayLazy 14911 14852 -0.4% 1.00x
SuffixCountableRange 118 118 +0.0% 1.00x
SuffixCountableRangeLazy 13217 12822 -3.0% 1.03x
SuffixSequence 26399 26885 +1.8% 0.98x (?)
SuffixSequenceLazy 26863 26508 -1.3% 1.01x
SuperChars 188796 188978 +0.1% 1.00x (?)
TwoSum 4260 4283 +0.5% 0.99x
TypeFlood 166 174 +4.8% 0.95x (?)
UTF8Decode 37323 37063 -0.7% 1.01x
Walsh 11985 11966 -0.2% 1.00x (?)
XorLoop 23716 23704 -0.1% 1.00x
Added (8)
TEST MIN MAX MEAN MAX_RSS
CharIndexing_punctuatedJapanese_unicodeScalars 82496 87127 84201 10919936
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 97834 99297 98434 10964992
CharIndexing_punctuated_unicodeScalars 106022 107315 106480 10928128
CharIndexing_punctuated_unicodeScalars_Backwards 123355 126382 124376 10969088
CharIteration_punctuatedJapanese_unicodeScalars 32282 32305 32291 10843477
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 57310 62496 59100 10915840
CharIteration_punctuated_unicodeScalars 40711 41036 40868 10851669
CharIteration_punctuated_unicodeScalars_Backwards 72673 73658 73329 10919936
Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini7,1
  Processor Name: Intel Core i5
  Processor Speed: 2.8 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 3 MB
  Memory: 16 GB

@milseman milseman merged commit 56debbc into swiftlang:master Jun 28, 2017
// 0x2010-0x2029
case 0x2010...0x2029: return true

// CJK punctuation characters, excluding extenders:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean by "extenders"?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The characters (i.e. scalars) that have the "extend" property for the purposes of grapheme breaking. Such characters usually* don't have a grapheme break before them. E.g. 0x302A.

See:
http://unicode.org/reports/tr29/#GB9
http://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt

@milseman milseman deleted the unicode_punk_shoe_a_shun branch June 29, 2017 23:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants