-
Notifications
You must be signed in to change notification settings - Fork 7
/
Benchmark.switch.cs
19914 lines (19912 loc) · 547 KB
/
Benchmark.switch.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//generated by GraphemeBreakPropertyCodeGenerator
using static GraphemeSplitter.GraphemeBreakProperty;
namespace GraphemeSplitter
{
partial class Benchmark
{
public static GraphemeBreakProperty GetBySwitch(uint codePoint)
{
switch (codePoint)
{
case 1536:
case 1537:
case 1538:
case 1539:
case 1540:
case 1541:
case 1757:
case 1807:
case 2274:
case 3406:
case 69821:
case 70082:
case 70083:
case 72250:
case 72326:
case 72327:
case 72328:
case 72329:
case 73030:
return Prepend;
case 13:
return CR;
case 10:
return LF;
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 11:
case 12:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 127:
case 128:
case 129:
case 130:
case 131:
case 132:
case 133:
case 134:
case 135:
case 136:
case 137:
case 138:
case 139:
case 140:
case 141:
case 142:
case 143:
case 144:
case 145:
case 146:
case 147:
case 148:
case 149:
case 150:
case 151:
case 152:
case 153:
case 154:
case 155:
case 156:
case 157:
case 158:
case 159:
case 173:
case 1564:
case 6158:
case 8203:
case 8206:
case 8207:
case 8232:
case 8233:
case 8234:
case 8235:
case 8236:
case 8237:
case 8238:
case 8288:
case 8289:
case 8290:
case 8291:
case 8292:
case 8293:
case 8294:
case 8295:
case 8296:
case 8297:
case 8298:
case 8299:
case 8300:
case 8301:
case 8302:
case 8303:
case 55296:
case 55297:
case 55298:
case 55299:
case 55300:
case 55301:
case 55302:
case 55303:
case 55304:
case 55305:
case 55306:
case 55307:
case 55308:
case 55309:
case 55310:
case 55311:
case 55312:
case 55313:
case 55314:
case 55315:
case 55316:
case 55317:
case 55318:
case 55319:
case 55320:
case 55321:
case 55322:
case 55323:
case 55324:
case 55325:
case 55326:
case 55327:
case 55328:
case 55329:
case 55330:
case 55331:
case 55332:
case 55333:
case 55334:
case 55335:
case 55336:
case 55337:
case 55338:
case 55339:
case 55340:
case 55341:
case 55342:
case 55343:
case 55344:
case 55345:
case 55346:
case 55347:
case 55348:
case 55349:
case 55350:
case 55351:
case 55352:
case 55353:
case 55354:
case 55355:
case 55356:
case 55357:
case 55358:
case 55359:
case 55360:
case 55361:
case 55362:
case 55363:
case 55364:
case 55365:
case 55366:
case 55367:
case 55368:
case 55369:
case 55370:
case 55371:
case 55372:
case 55373:
case 55374:
case 55375:
case 55376:
case 55377:
case 55378:
case 55379:
case 55380:
case 55381:
case 55382:
case 55383:
case 55384:
case 55385:
case 55386:
case 55387:
case 55388:
case 55389:
case 55390:
case 55391:
case 55392:
case 55393:
case 55394:
case 55395:
case 55396:
case 55397:
case 55398:
case 55399:
case 55400:
case 55401:
case 55402:
case 55403:
case 55404:
case 55405:
case 55406:
case 55407:
case 55408:
case 55409:
case 55410:
case 55411:
case 55412:
case 55413:
case 55414:
case 55415:
case 55416:
case 55417:
case 55418:
case 55419:
case 55420:
case 55421:
case 55422:
case 55423:
case 55424:
case 55425:
case 55426:
case 55427:
case 55428:
case 55429:
case 55430:
case 55431:
case 55432:
case 55433:
case 55434:
case 55435:
case 55436:
case 55437:
case 55438:
case 55439:
case 55440:
case 55441:
case 55442:
case 55443:
case 55444:
case 55445:
case 55446:
case 55447:
case 55448:
case 55449:
case 55450:
case 55451:
case 55452:
case 55453:
case 55454:
case 55455:
case 55456:
case 55457:
case 55458:
case 55459:
case 55460:
case 55461:
case 55462:
case 55463:
case 55464:
case 55465:
case 55466:
case 55467:
case 55468:
case 55469:
case 55470:
case 55471:
case 55472:
case 55473:
case 55474:
case 55475:
case 55476:
case 55477:
case 55478:
case 55479:
case 55480:
case 55481:
case 55482:
case 55483:
case 55484:
case 55485:
case 55486:
case 55487:
case 55488:
case 55489:
case 55490:
case 55491:
case 55492:
case 55493:
case 55494:
case 55495:
case 55496:
case 55497:
case 55498:
case 55499:
case 55500:
case 55501:
case 55502:
case 55503:
case 55504:
case 55505:
case 55506:
case 55507:
case 55508:
case 55509:
case 55510:
case 55511:
case 55512:
case 55513:
case 55514:
case 55515:
case 55516:
case 55517:
case 55518:
case 55519:
case 55520:
case 55521:
case 55522:
case 55523:
case 55524:
case 55525:
case 55526:
case 55527:
case 55528:
case 55529:
case 55530:
case 55531:
case 55532:
case 55533:
case 55534:
case 55535:
case 55536:
case 55537:
case 55538:
case 55539:
case 55540:
case 55541:
case 55542:
case 55543:
case 55544:
case 55545:
case 55546:
case 55547:
case 55548:
case 55549:
case 55550:
case 55551:
case 55552:
case 55553:
case 55554:
case 55555:
case 55556:
case 55557:
case 55558:
case 55559:
case 55560:
case 55561:
case 55562:
case 55563:
case 55564:
case 55565:
case 55566:
case 55567:
case 55568:
case 55569:
case 55570:
case 55571:
case 55572:
case 55573:
case 55574:
case 55575:
case 55576:
case 55577:
case 55578:
case 55579:
case 55580:
case 55581:
case 55582:
case 55583:
case 55584:
case 55585:
case 55586:
case 55587:
case 55588:
case 55589:
case 55590:
case 55591:
case 55592:
case 55593:
case 55594:
case 55595:
case 55596:
case 55597:
case 55598:
case 55599:
case 55600:
case 55601:
case 55602:
case 55603:
case 55604:
case 55605:
case 55606:
case 55607:
case 55608:
case 55609:
case 55610:
case 55611:
case 55612:
case 55613:
case 55614:
case 55615:
case 55616:
case 55617:
case 55618:
case 55619:
case 55620:
case 55621:
case 55622:
case 55623:
case 55624:
case 55625:
case 55626:
case 55627:
case 55628:
case 55629:
case 55630:
case 55631:
case 55632:
case 55633:
case 55634:
case 55635:
case 55636:
case 55637:
case 55638:
case 55639:
case 55640:
case 55641:
case 55642:
case 55643:
case 55644:
case 55645:
case 55646:
case 55647:
case 55648:
case 55649:
case 55650:
case 55651:
case 55652:
case 55653:
case 55654:
case 55655:
case 55656:
case 55657:
case 55658:
case 55659:
case 55660:
case 55661:
case 55662:
case 55663:
case 55664:
case 55665:
case 55666:
case 55667:
case 55668:
case 55669:
case 55670:
case 55671:
case 55672:
case 55673:
case 55674:
case 55675:
case 55676:
case 55677:
case 55678:
case 55679:
case 55680:
case 55681:
case 55682:
case 55683:
case 55684:
case 55685:
case 55686:
case 55687:
case 55688:
case 55689:
case 55690:
case 55691:
case 55692:
case 55693:
case 55694:
case 55695:
case 55696:
case 55697:
case 55698:
case 55699:
case 55700:
case 55701:
case 55702:
case 55703:
case 55704:
case 55705:
case 55706:
case 55707:
case 55708:
case 55709:
case 55710:
case 55711:
case 55712:
case 55713:
case 55714:
case 55715:
case 55716:
case 55717:
case 55718:
case 55719:
case 55720:
case 55721:
case 55722:
case 55723:
case 55724:
case 55725:
case 55726:
case 55727:
case 55728:
case 55729:
case 55730:
case 55731:
case 55732:
case 55733:
case 55734:
case 55735:
case 55736:
case 55737:
case 55738:
case 55739:
case 55740:
case 55741:
case 55742:
case 55743:
case 55744:
case 55745:
case 55746:
case 55747:
case 55748:
case 55749:
case 55750:
case 55751:
case 55752:
case 55753:
case 55754:
case 55755:
case 55756:
case 55757:
case 55758:
case 55759:
case 55760:
case 55761:
case 55762:
case 55763:
case 55764:
case 55765:
case 55766:
case 55767:
case 55768:
case 55769:
case 55770:
case 55771:
case 55772:
case 55773:
case 55774:
case 55775:
case 55776:
case 55777:
case 55778:
case 55779:
case 55780:
case 55781:
case 55782:
case 55783:
case 55784:
case 55785:
case 55786:
case 55787:
case 55788:
case 55789:
case 55790:
case 55791:
case 55792:
case 55793:
case 55794:
case 55795:
case 55796:
case 55797:
case 55798:
case 55799:
case 55800:
case 55801:
case 55802:
case 55803:
case 55804:
case 55805:
case 55806:
case 55807:
case 55808:
case 55809:
case 55810:
case 55811:
case 55812:
case 55813:
case 55814:
case 55815:
case 55816:
case 55817:
case 55818:
case 55819:
case 55820:
case 55821:
case 55822:
case 55823:
case 55824:
case 55825:
case 55826:
case 55827:
case 55828:
case 55829:
case 55830:
case 55831:
case 55832:
case 55833:
case 55834:
case 55835:
case 55836:
case 55837:
case 55838:
case 55839:
case 55840:
case 55841:
case 55842:
case 55843:
case 55844:
case 55845:
case 55846:
case 55847:
case 55848:
case 55849:
case 55850:
case 55851:
case 55852:
case 55853:
case 55854:
case 55855:
case 55856:
case 55857:
case 55858:
case 55859:
case 55860:
case 55861:
case 55862:
case 55863:
case 55864:
case 55865:
case 55866:
case 55867:
case 55868:
case 55869:
case 55870:
case 55871:
case 55872:
case 55873:
case 55874:
case 55875:
case 55876:
case 55877:
case 55878:
case 55879:
case 55880:
case 55881:
case 55882:
case 55883:
case 55884:
case 55885:
case 55886:
case 55887:
case 55888:
case 55889:
case 55890:
case 55891:
case 55892:
case 55893:
case 55894:
case 55895:
case 55896:
case 55897:
case 55898:
case 55899:
case 55900:
case 55901:
case 55902:
case 55903:
case 55904:
case 55905:
case 55906:
case 55907:
case 55908:
case 55909:
case 55910:
case 55911:
case 55912:
case 55913:
case 55914:
case 55915:
case 55916:
case 55917:
case 55918:
case 55919:
case 55920:
case 55921:
case 55922:
case 55923:
case 55924:
case 55925:
case 55926:
case 55927:
case 55928:
case 55929:
case 55930:
case 55931:
case 55932:
case 55933:
case 55934:
case 55935:
case 55936:
case 55937:
case 55938:
case 55939:
case 55940:
case 55941:
case 55942:
case 55943:
case 55944:
case 55945:
case 55946:
case 55947:
case 55948:
case 55949:
case 55950:
case 55951:
case 55952:
case 55953:
case 55954:
case 55955:
case 55956:
case 55957:
case 55958:
case 55959:
case 55960:
case 55961:
case 55962:
case 55963:
case 55964:
case 55965:
case 55966:
case 55967:
case 55968:
case 55969:
case 55970:
case 55971:
case 55972:
case 55973:
case 55974:
case 55975:
case 55976:
case 55977:
case 55978:
case 55979:
case 55980:
case 55981:
case 55982:
case 55983:
case 55984:
case 55985:
case 55986:
case 55987:
case 55988:
case 55989:
case 55990:
case 55991:
case 55992:
case 55993:
case 55994:
case 55995:
case 55996:
case 55997:
case 55998:
case 55999:
case 56000:
case 56001:
case 56002:
case 56003:
case 56004:
case 56005:
case 56006:
case 56007:
case 56008:
case 56009:
case 56010:
case 56011:
case 56012:
case 56013:
case 56014:
case 56015:
case 56016:
case 56017:
case 56018:
case 56019:
case 56020:
case 56021:
case 56022:
case 56023:
case 56024:
case 56025:
case 56026:
case 56027:
case 56028:
case 56029:
case 56030:
case 56031:
case 56032:
case 56033:
case 56034:
case 56035:
case 56036:
case 56037:
case 56038:
case 56039:
case 56040:
case 56041:
case 56042:
case 56043:
case 56044:
case 56045:
case 56046:
case 56047:
case 56048:
case 56049:
case 56050:
case 56051:
case 56052:
case 56053:
case 56054:
case 56055:
case 56056:
case 56057:
case 56058:
case 56059:
case 56060:
case 56061:
case 56062:
case 56063:
case 56064:
case 56065:
case 56066:
case 56067:
case 56068:
case 56069:
case 56070:
case 56071:
case 56072:
case 56073:
case 56074:
case 56075:
case 56076:
case 56077:
case 56078:
case 56079:
case 56080:
case 56081:
case 56082:
case 56083:
case 56084:
case 56085:
case 56086:
case 56087:
case 56088:
case 56089:
case 56090:
case 56091:
case 56092:
case 56093:
case 56094:
case 56095:
case 56096:
case 56097:
case 56098:
case 56099:
case 56100:
case 56101:
case 56102:
case 56103:
case 56104:
case 56105:
case 56106:
case 56107:
case 56108:
case 56109:
case 56110:
case 56111:
case 56112:
case 56113:
case 56114:
case 56115:
case 56116:
case 56117:
case 56118:
case 56119:
case 56120:
case 56121:
case 56122:
case 56123:
case 56124:
case 56125:
case 56126:
case 56127:
case 56128:
case 56129:
case 56130:
case 56131:
case 56132:
case 56133:
case 56134:
case 56135:
case 56136:
case 56137:
case 56138:
case 56139:
case 56140:
case 56141:
case 56142:
case 56143:
case 56144:
case 56145:
case 56146:
case 56147:
case 56148:
case 56149:
case 56150:
case 56151:
case 56152:
case 56153:
case 56154:
case 56155:
case 56156:
case 56157:
case 56158:
case 56159:
case 56160:
case 56161:
case 56162:
case 56163:
case 56164:
case 56165:
case 56166:
case 56167: