This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 1/3] aarch64: Optimized memset specific to AmpereComputing emag
- From: Feng Xue <fxue at os dot amperecomputing dot com>
- To: "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>
- Cc: Feng Xue <fxue at os dot amperecomputing dot com>
- Date: Tue, 18 Dec 2018 10:03:15 +0000
- Subject: [PATCH 1/3] aarch64: Optimized memset specific to AmpereComputing emag
At first, performance report from benchtest are listed.
Function: memset
Variant: walk
simple_memset __memset_falkor __memset_emag __memset_generic
===================================================================================
char=65, length=128: 89.10 21.30 ( 76.10%) 6.68 ( 92.50%) 11.35 ( 87.26%)
char=65, length=129: 89.80 15.02 ( 83.28%) 8.02 ( 91.07%) 15.03 ( 83.26%)
char=65, length=130: 91.37 15.03 ( 83.55%) 8.02 ( 91.23%) 15.02 ( 83.57%)
char=65, length=131: 92.04 21.04 ( 77.14%) 19.42 ( 78.90%) 15.02 ( 83.68%)
char=65, length=132: 91.71 17.90 ( 80.48%) 8.02 ( 91.26%) 15.02 ( 83.63%)
char=65, length=133: 92.38 21.35 ( 76.89%) 20.63 ( 77.67%) 21.35 ( 76.89%)
char=65, length=134: 94.13 15.02 ( 84.04%) 20.21 ( 78.53%) 21.35 ( 77.32%)
char=65, length=135: 94.72 15.03 ( 84.13%) 8.02 ( 91.54%) 21.37 ( 77.44%)
char=65, length=136: 94.48 21.35 ( 77.40%) 12.25 ( 87.04%) 20.82 ( 77.97%)
char=65, length=137: 95.04 15.02 ( 84.20%) 8.02 ( 91.57%) 15.02 ( 84.20%)
char=65, length=138: 96.70 30.63 ( 68.32%) 30.62 ( 68.34%) 30.65 ( 68.31%)
char=65, length=139: 97.37 15.36 ( 84.22%) 8.02 ( 91.76%) 15.02 ( 84.58%)
char=65, length=140: 97.05 20.75 ( 78.62%) 14.65 ( 84.91%) 15.02 ( 84.53%)
char=65, length=141: 97.82 15.03 ( 84.63%) 8.02 ( 91.80%) 15.02 ( 84.65%)
char=65, length=142: 99.38 20.55 ( 79.33%) 20.78 ( 79.09%) 30.63 ( 69.18%)
char=65, length=143: 100.04 15.02 ( 84.99%) 8.02 ( 91.99%) 15.03 ( 84.98%)
char=65, length=256: 174.51 30.36 ( 82.60%) 23.77 ( 86.38%) 30.46 ( 82.55%)
char=65, length=257: 175.07 29.91 ( 82.91%) 29.92 ( 82.91%) 29.89 ( 82.93%)
char=65, length=258: 176.77 30.37 ( 82.82%) 30.22 ( 82.90%) 30.36 ( 82.82%)
char=65, length=259: 177.41 30.39 ( 82.87%) 29.92 ( 83.14%) 30.36 ( 82.88%)
char=65, length=260: 177.08 29.89 ( 83.12%) 29.94 ( 83.09%) 29.89 ( 83.12%)
char=65, length=261: 177.85 29.91 ( 83.18%) 29.92 ( 83.18%) 29.89 ( 83.19%)
char=65, length=262: 179.43 29.89 ( 83.34%) 29.92 ( 83.33%) 29.91 ( 83.33%)
char=65, length=263: 180.07 30.38 ( 83.13%) 30.35 ( 83.14%) 30.36 ( 83.14%)
char=65, length=264: 179.83 18.03 ( 89.97%) 12.03 ( 93.31%) 18.03 ( 89.97%)
char=65, length=265: 180.42 30.45 ( 83.12%) 29.92 ( 83.42%) 30.49 ( 83.10%)
char=65, length=266: 182.07 30.45 ( 83.27%) 29.94 ( 83.55%) 30.70 ( 83.14%)
char=65, length=267: 182.74 29.91 ( 83.63%) 30.45 ( 83.33%) 28.05 ( 84.65%)
char=65, length=268: 182.40 30.46 ( 83.30%) 29.94 ( 83.59%) 30.45 ( 83.30%)
char=65, length=269: 183.16 30.39 ( 83.40%) 30.37 ( 83.42%) 30.27 ( 83.47%)
char=65, length=270: 184.75 30.37 ( 83.56%) 30.38 ( 83.55%) 30.37 ( 83.56%)
char=65, length=271: 185.44 30.40 ( 83.60%) 30.33 ( 83.64%) 30.40 ( 83.61%)
char=65, length=512: 345.18 31.40 ( 90.90%) 30.43 ( 91.18%) 31.39 ( 90.91%)
char=65, length=513: 345.87 35.07 ( 89.86%) 30.39 ( 91.21%) 35.06 ( 89.86%)
char=65, length=514: 347.48 35.11 ( 89.90%) 30.42 ( 91.25%) 35.06 ( 89.91%)
char=65, length=515: 348.26 35.11 ( 89.92%) 30.40 ( 91.27%) 35.06 ( 89.93%)
char=65, length=516: 347.92 35.11 ( 89.91%) 30.40 ( 91.26%) 35.06 ( 89.92%)
char=65, length=517: 348.48 35.06 ( 89.94%) 30.44 ( 91.26%) 35.06 ( 89.94%)
char=65, length=518: 350.19 35.07 ( 89.99%) 30.53 ( 91.28%) 35.06 ( 89.99%)
char=65, length=519: 350.82 35.06 ( 90.01%) 30.68 ( 91.25%) 35.06 ( 90.01%)
char=65, length=520: 350.47 31.40 ( 91.04%) 30.50 ( 91.30%) 31.45 ( 91.03%)
char=65, length=521: 351.25 35.06 ( 90.02%) 30.57 ( 91.30%) 35.11 ( 90.00%)
char=65, length=522: 352.83 35.07 ( 90.06%) 30.40 ( 91.39%) 35.12 ( 90.05%)
char=65, length=523: 353.47 35.06 ( 90.08%) 30.70 ( 91.31%) 35.06 ( 90.08%)
char=65, length=524: 353.25 35.06 ( 90.07%) 30.40 ( 91.39%) 35.06 ( 90.07%)
char=65, length=525: 353.83 35.06 ( 90.09%) 30.73 ( 91.32%) 35.06 ( 90.09%)
char=65, length=526: 355.50 35.06 ( 90.14%) 30.45 ( 91.43%) 35.06 ( 90.14%)
char=65, length=527: 356.19 35.06 ( 90.16%) 30.62 ( 91.40%) 35.06 ( 90.16%)
char=65, length=1024: 694.94 58.21 ( 91.62%) 44.12 ( 93.65%) 58.12 ( 91.64%)
char=65, length=1025: 695.61 61.89 ( 91.10%) 45.46 ( 93.46%) 61.79 ( 91.12%)
char=65, length=1026: 696.27 61.79 ( 91.13%) 45.55 ( 93.46%) 61.79 ( 91.13%)
char=65, length=1027: 696.98 61.79 ( 91.13%) 45.46 ( 93.48%) 61.89 ( 91.12%)
char=65, length=1028: 697.60 61.79 ( 91.14%) 45.45 ( 93.48%) 61.79 ( 91.14%)
char=65, length=1029: 698.33 61.79 ( 91.15%) 45.46 ( 93.49%) 61.79 ( 91.15%)
char=65, length=1030: 698.98 61.80 ( 91.16%) 45.46 ( 93.50%) 61.79 ( 91.16%)
char=65, length=1031: 699.60 61.88 ( 91.15%) 45.46 ( 93.50%) 61.79 ( 91.17%)
char=65, length=1032: 700.32 58.13 ( 91.70%) 44.23 ( 93.68%) 58.13 ( 91.70%)
char=65, length=1033: 700.95 61.79 ( 91.18%) 45.46 ( 93.52%) 61.88 ( 91.17%)
char=65, length=1034: 701.60 61.79 ( 91.19%) 45.46 ( 93.52%) 61.79 ( 91.19%)
char=65, length=1035: 702.34 61.79 ( 91.20%) 45.46 ( 93.53%) 61.79 ( 91.20%)
char=65, length=1036: 703.03 61.79 ( 91.21%) 45.46 ( 93.53%) 61.79 ( 91.21%)
char=65, length=1037: 703.63 61.88 ( 91.21%) 45.46 ( 93.54%) 61.79 ( 91.22%)
char=65, length=1038: 704.27 61.80 ( 91.23%) 45.55 ( 93.53%) 61.79 ( 91.23%)
char=65, length=1039: 704.94 61.79 ( 91.23%) 45.46 ( 93.55%) 61.96 ( 91.21%)
char=65, length=2048: 1378.15 111.63 ( 91.90%) 86.92 ( 93.69%) 111.58 ( 91.90%)
char=65, length=2049: 1378.87 115.27 ( 91.64%) 88.25 ( 93.60%) 115.25 ( 91.64%)
char=65, length=2050: 1379.37 115.25 ( 91.64%) 88.24 ( 93.60%) 115.24 ( 91.65%)
char=65, length=2051: 1379.90 115.44 ( 91.63%) 88.25 ( 93.60%) 115.25 ( 91.65%)
char=65, length=2052: 1380.54 115.25 ( 91.65%) 88.25 ( 93.61%) 115.42 ( 91.64%)
char=65, length=2053: 1381.20 115.25 ( 91.66%) 88.24 ( 93.61%) 115.24 ( 91.66%)
char=65, length=2054: 1382.11 115.25 ( 91.66%) 88.25 ( 93.61%) 115.25 ( 91.66%)
char=65, length=2055: 1382.67 115.25 ( 91.66%) 88.24 ( 93.62%) 115.25 ( 91.66%)
char=65, length=2056: 1383.22 111.58 ( 91.93%) 87.09 ( 93.70%) 111.59 ( 91.93%)
char=65, length=2057: 1383.93 115.25 ( 91.67%) 88.25 ( 93.62%) 115.43 ( 91.66%)
char=65, length=2058: 1384.63 115.25 ( 91.68%) 88.24 ( 93.63%) 115.24 ( 91.68%)
char=65, length=2059: 1385.33 115.26 ( 91.68%) 88.24 ( 93.63%) 115.24 ( 91.68%)
char=65, length=2060: 1385.89 115.45 ( 91.67%) 88.25 ( 93.63%) 115.25 ( 91.68%)
char=65, length=2061: 1386.54 115.25 ( 91.69%) 88.45 ( 93.62%) 115.25 ( 91.69%)
char=65, length=2062: 1387.21 115.25 ( 91.69%) 88.25 ( 93.64%) 115.45 ( 91.68%)
char=65, length=2063: 1388.00 115.27 ( 91.70%) 88.24 ( 93.64%) 115.25 ( 91.70%)
char=65, length=4096: 2744.05 218.50 ( 92.04%) 172.49 ( 93.71%) 218.48 ( 92.04%)
char=65, length=4097: 2744.45 222.52 ( 91.89%) 173.82 ( 93.67%) 222.15 ( 91.91%)
char=65, length=4098: 2745.06 222.14 ( 91.91%) 174.19 ( 93.65%) 222.16 ( 91.91%)
char=65, length=4099: 2745.73 222.17 ( 91.91%) 173.82 ( 93.67%) 222.14 ( 91.91%)
char=65, length=4100: 2746.86 222.18 ( 91.91%) 173.82 ( 93.67%) 222.15 ( 91.91%)
char=65, length=4101: 2747.17 222.53 ( 91.90%) 173.83 ( 93.67%) 222.14 ( 91.91%)
char=65, length=4102: 2747.74 222.16 ( 91.91%) 174.19 ( 93.66%) 222.15 ( 91.92%)
char=65, length=4103: 2748.40 222.15 ( 91.92%) 173.82 ( 93.68%) 222.50 ( 91.90%)
char=65, length=4104: 2749.25 218.50 ( 92.05%) 172.50 ( 93.73%) 218.48 ( 92.05%)
char=65, length=4105: 2749.98 222.16 ( 91.92%) 173.82 ( 93.68%) 222.14 ( 91.92%)
char=65, length=4106: 2750.41 222.51 ( 91.91%) 173.81 ( 93.68%) 222.14 ( 91.92%)
char=65, length=4107: 2751.08 222.17 ( 91.92%) 173.81 ( 93.68%) 222.51 ( 91.91%)
char=65, length=4108: 2751.73 222.15 ( 91.93%) 173.81 ( 93.68%) 222.14 ( 91.93%)
char=65, length=4109: 2752.84 222.18 ( 91.93%) 173.81 ( 93.69%) 222.16 ( 91.93%)
char=65, length=4110: 2753.12 222.51 ( 91.92%) 173.82 ( 93.69%) 222.15 ( 91.93%)
char=65, length=4111: 2753.77 222.16 ( 91.93%) 174.18 ( 93.67%) 222.15 ( 91.93%)
char=65, length=8192: 5475.48 432.30 ( 92.10%) 343.63 ( 93.72%) 432.29 ( 92.10%)
char=65, length=8193: 5476.51 435.97 ( 92.04%) 344.97 ( 93.70%) 435.95 ( 92.04%)
char=65, length=8194: 5477.22 436.73 ( 92.03%) 345.02 ( 93.70%) 435.96 ( 92.04%)
char=65, length=8195: 5477.45 435.97 ( 92.04%) 345.71 ( 93.69%) 435.95 ( 92.04%)
char=65, length=8196: 5478.21 435.96 ( 92.04%) 344.95 ( 93.70%) 436.67 ( 92.03%)
char=65, length=8197: 5478.75 435.98 ( 92.04%) 344.94 ( 93.70%) 435.96 ( 92.04%)
char=65, length=8198: 5480.24 435.98 ( 92.04%) 344.98 ( 93.71%) 435.96 ( 92.04%)
char=65, length=8199: 5480.28 436.00 ( 92.04%) 345.77 ( 93.69%) 435.95 ( 92.05%)
char=65, length=8200: 5480.84 432.29 ( 92.11%) 343.63 ( 93.73%) 433.06 ( 92.10%)
char=65, length=8201: 5481.49 435.95 ( 92.05%) 344.95 ( 93.71%) 435.94 ( 92.05%)
char=65, length=8202: 5482.56 435.96 ( 92.05%) 344.96 ( 93.71%) 435.94 ( 92.05%)
char=65, length=8203: 5483.25 436.00 ( 92.05%) 345.71 ( 93.70%) 435.97 ( 92.05%)
char=65, length=8204: 5483.52 435.98 ( 92.05%) 344.96 ( 93.71%) 436.71 ( 92.04%)
char=65, length=8205: 5484.11 435.97 ( 92.05%) 344.95 ( 93.71%) 435.96 ( 92.05%)
char=65, length=8206: 5485.15 435.96 ( 92.05%) 344.96 ( 93.71%) 435.94 ( 92.05%)
char=65, length=8207: 5485.53 436.69 ( 92.04%) 344.97 ( 93.71%) 435.95 ( 92.05%)
char=65, length=16384: 10939.70 859.95 ( 92.14%) 685.89 ( 93.73%) 861.55 ( 92.12%)
char=65, length=16385: 10939.70 863.64 ( 92.11%) 687.25 ( 93.72%) 863.54 ( 92.11%)
char=65, length=16386: 10941.10 863.60 ( 92.11%) 687.27 ( 93.72%) 863.57 ( 92.11%)
char=65, length=16387: 10940.90 865.06 ( 92.09%) 687.25 ( 93.72%) 863.55 ( 92.11%)
char=65, length=16388: 10941.50 863.58 ( 92.11%) 687.21 ( 93.72%) 865.83 ( 92.09%)
char=65, length=16389: 10942.60 863.62 ( 92.11%) 687.31 ( 93.72%) 863.58 ( 92.11%)
char=65, length=16390: 10944.20 863.61 ( 92.11%) 687.26 ( 93.72%) 863.55 ( 92.11%)
char=65, length=16391: 10943.70 865.09 ( 92.10%) 687.27 ( 93.72%) 863.54 ( 92.11%)
char=65, length=16392: 10944.30 866.21 ( 92.09%) 699.19 ( 93.61%) 866.18 ( 92.09%)
char=65, length=16393: 10948.60 863.88 ( 92.11%) 687.34 ( 93.72%) 863.64 ( 92.11%)
char=65, length=16394: 10948.50 864.29 ( 92.11%) 687.45 ( 93.72%) 863.62 ( 92.11%)
char=65, length=16395: 10948.20 865.32 ( 92.10%) 687.32 ( 93.72%) 863.57 ( 92.11%)
char=65, length=16396: 10947.20 863.66 ( 92.11%) 687.27 ( 93.72%) 865.14 ( 92.10%)
char=65, length=16397: 10948.20 863.66 ( 92.11%) 687.28 ( 93.72%) 863.55 ( 92.11%)
char=65, length=16398: 10951.00 863.67 ( 92.11%) 687.35 ( 93.72%) 863.63 ( 92.11%)
char=65, length=16399: 10949.50 865.37 ( 92.10%) 687.30 ( 93.72%) 863.60 ( 92.11%)
char=65, length=32768: 21866.10 1715.22 ( 92.16%) 1370.45 ( 93.73%) 1718.09 ( 92.14%)
char=65, length=32769: 21866.60 1718.93 ( 92.14%) 1371.80 ( 93.73%) 1718.81 ( 92.14%)
char=65, length=32770: 21869.00 1718.87 ( 92.14%) 1371.88 ( 93.73%) 1718.85 ( 92.14%)
char=65, length=32771: 21870.00 1721.85 ( 92.13%) 1371.86 ( 93.73%) 1718.85 ( 92.14%)
char=65, length=32772: 21868.70 1718.89 ( 92.14%) 1371.82 ( 93.73%) 1722.09 ( 92.13%)
char=65, length=32773: 21869.10 1718.87 ( 92.14%) 1371.84 ( 93.73%) 1718.85 ( 92.14%)
char=65, length=32774: 21871.50 1718.87 ( 92.14%) 1371.82 ( 93.73%) 1718.81 ( 92.14%)
char=65, length=32775: 21870.70 1723.10 ( 92.12%) 1372.06 ( 93.73%) 1718.91 ( 92.14%)
char=65, length=32776: 21871.90 1715.30 ( 92.16%) 1370.42 ( 93.73%) 1718.22 ( 92.14%)
char=65, length=32777: 21872.00 1718.81 ( 92.14%) 1371.92 ( 93.73%) 1718.87 ( 92.14%)
char=65, length=32778: 21873.80 1718.81 ( 92.14%) 1371.82 ( 93.73%) 1718.77 ( 92.14%)
char=65, length=32779: 21873.20 1721.64 ( 92.13%) 1371.90 ( 93.73%) 1718.85 ( 92.14%)
char=65, length=32780: 21875.20 1718.87 ( 92.14%) 1371.84 ( 93.73%) 1722.13 ( 92.13%)
char=65, length=32781: 21874.80 1718.91 ( 92.14%) 1371.86 ( 93.73%) 1718.77 ( 92.14%)
char=65, length=32782: 21882.90 1720.16 ( 92.14%) 1372.00 ( 93.73%) 1718.75 ( 92.15%)
char=65, length=32783: 21878.20 1722.36 ( 92.13%) 1371.88 ( 93.73%) 1718.81 ( 92.14%)
char=65, length=65536: 43720.20 3431.93 ( 92.15%) 2744.76 ( 93.72%) 3437.86 ( 92.14%)
char=65, length=65537: 43731.20 3441.88 ( 92.13%) 2751.09 ( 93.71%) 3441.21 ( 92.13%)
char=65, length=65538: 43731.40 3441.60 ( 92.13%) 2750.98 ( 93.71%) 3441.09 ( 92.13%)
char=65, length=65539: 43728.00 3448.87 ( 92.11%) 2750.94 ( 93.71%) 3441.21 ( 92.13%)
char=65, length=65540: 43728.80 3441.56 ( 92.13%) 2750.66 ( 93.71%) 3447.19 ( 92.12%)
char=65, length=65541: 43728.60 3441.09 ( 92.13%) 2750.70 ( 93.71%) 3440.98 ( 92.13%)
char=65, length=65542: 43736.40 3441.33 ( 92.13%) 2750.70 ( 93.71%) 3441.41 ( 92.13%)
char=65, length=65543: 43730.60 3447.27 ( 92.12%) 2750.94 ( 93.71%) 3440.98 ( 92.13%)
char=65, length=65544: 43731.10 3437.27 ( 92.14%) 2750.27 ( 93.71%) 3443.24 ( 92.13%)
char=65, length=65545: 43731.50 3441.25 ( 92.13%) 2750.74 ( 93.71%) 3441.09 ( 92.13%)
char=65, length=65546: 43738.40 3441.13 ( 92.13%) 2750.78 ( 93.71%) 3440.94 ( 92.13%)
char=65, length=65547: 43733.50 3446.68 ( 92.12%) 2750.90 ( 93.71%) 3440.94 ( 92.13%)
char=65, length=65548: 43734.70 3441.91 ( 92.13%) 2750.86 ( 93.71%) 3448.32 ( 92.12%)
char=65, length=65549: 43734.50 3441.25 ( 92.13%) 2750.90 ( 93.71%) 3441.02 ( 92.13%)
char=65, length=65550: 43738.10 3441.21 ( 92.13%) 2750.66 ( 93.71%) 3440.90 ( 92.13%)
char=65, length=65551: 43740.00 3441.80 ( 92.13%) 2757.54 ( 93.70%) 3441.25 ( 92.13%)
char=65, length=131072: 87438.80 6863.75 ( 92.15%) 5493.67 ( 93.72%) 6875.23 ( 92.14%)
char=65, length=131073: 87450.20 6878.75 ( 92.13%) 5505.39 ( 93.70%) 6877.89 ( 92.14%)
char=65, length=131074: 87457.00 6878.59 ( 92.13%) 5505.31 ( 93.71%) 6878.20 ( 92.14%)
char=65, length=131075: 87451.40 6878.67 ( 92.13%) 5516.88 ( 93.69%) 6877.89 ( 92.14%)
char=65, length=131076: 87460.50 6879.38 ( 92.13%) 5505.23 ( 93.71%) 6891.48 ( 92.12%)
char=65, length=131077: 87454.20 6878.98 ( 92.13%) 5505.31 ( 93.70%) 6877.97 ( 92.14%)
char=65, length=131078: 87460.10 6878.75 ( 92.13%) 5505.23 ( 93.71%) 6877.97 ( 92.14%)
char=65, length=131079: 87454.50 6878.44 ( 92.13%) 5517.58 ( 93.69%) 6878.36 ( 92.13%)
char=65, length=131080: 87453.80 6874.06 ( 92.14%) 5504.61 ( 93.71%) 6895.94 ( 92.11%)
char=65, length=131081: 87456.90 6878.36 ( 92.14%) 5505.08 ( 93.71%) 6877.73 ( 92.14%)
char=65, length=131082: 87463.10 6878.20 ( 92.14%) 5505.47 ( 93.71%) 6878.67 ( 92.14%)
char=65, length=131083: 87456.10 6878.05 ( 92.14%) 5516.64 ( 93.69%) 6878.59 ( 92.13%)
char=65, length=131084: 87456.40 6877.89 ( 92.14%) 5505.00 ( 93.71%) 6890.62 ( 92.12%)
char=65, length=131085: 87463.10 6879.30 ( 92.13%) 5505.31 ( 93.71%) 6877.89 ( 92.14%)
char=65, length=131086: 87459.80 6891.95 ( 92.12%) 5505.55 ( 93.71%) 6878.12 ( 92.14%)
char=65, length=131087: 87459.30 6878.36 ( 92.14%) 5516.95 ( 93.69%) 6878.28 ( 92.14%)
char=65, length=262144: 174909.00 13760.30 ( 92.13%) 11023.40 ( 93.70%) 13758.80 ( 92.13%)
char=65, length=262145: 175021.00 13796.70 ( 92.12%) 11048.10 ( 93.69%) 13785.80 ( 92.12%)
char=65, length=262146: 174970.00 13877.20 ( 92.07%) 11051.20 ( 93.68%) 13785.00 ( 92.00%)
char=65, length=262147: 174941.00 13788.30 ( 92.12%) 11073.00 ( 93.00%) 13785.30 ( 92.12%)
char=65, length=262148: 174936.00 13785.30 ( 92.12%) 11046.20 ( 93.69%) 13784.70 ( 92.12%)
char=65, length=262149: 174952.00 13785.80 ( 92.12%) 11046.70 ( 93.69%) 13784.10 ( 92.12%)
char=65, length=262150: 174934.00 13808.90 ( 92.11%) 11048.00 ( 93.00%) 13784.80 ( 92.12%)
char=65, length=262151: 174955.00 13787.30 ( 92.12%) 11072.50 ( 93.67%) 13787.00 ( 92.00%)
char=65, length=262152: 174937.00 13781.70 ( 92.12%) 11046.20 ( 93.69%) 13780.80 ( 92.12%)
char=65, length=262153: 174955.00 13784.70 ( 92.12%) 11048.00 ( 93.00%) 13785.30 ( 92.12%)
char=65, length=262154: 174938.00 13807.50 ( 92.11%) 11047.20 ( 93.69%) 13785.50 ( 92.12%)
char=65, length=262155: 174938.00 13785.90 ( 92.12%) 11085.30 ( 93.66%) 13786.60 ( 92.12%)
char=65, length=262156: 174942.00 13785.60 ( 92.12%) 11047.50 ( 93.69%) 13785.20 ( 92.12%)
char=65, length=262157: 174954.00 13784.80 ( 92.12%) 11046.40 ( 93.69%) 13784.80 ( 92.12%)
char=65, length=262158: 174940.00 13808.80 ( 92.11%) 11047.00 ( 93.00%) 13785.50 ( 92.12%)
char=65, length=262159: 174941.00 13786.40 ( 92.12%) 11071.60 ( 93.67%) 13785.20 ( 92.12%)
char=65, length=524288: 350007.00 27683.10 ( 92.09%) 22215.30 ( 93.65%) 27679.40 ( 92.09%)
char=65, length=524289: 350064.00 27727.20 ( 92.08%) 22259.10 ( 93.64%) 27726.20 ( 92.08%)
char=65, length=524290: 350035.00 27773.40 ( 92.07%) 22258.80 ( 93.64%) 27726.90 ( 92.08%)
char=65, length=524291: 350037.00 27730.00 ( 92.00%) 22317.50 ( 93.62%) 27727.20 ( 92.08%)
char=65, length=524292: 350028.00 27726.90 ( 92.08%) 22259.10 ( 93.64%) 27725.60 ( 92.08%)
char=65, length=524293: 350098.00 27732.20 ( 92.08%) 22258.10 ( 93.64%) 27729.10 ( 92.08%)
char=65, length=524294: 350035.00 27777.20 ( 92.06%) 22260.30 ( 93.64%) 27727.20 ( 92.08%)
char=65, length=524295: 350030.00 27727.80 ( 92.08%) 22307.80 ( 93.63%) 27727.80 ( 92.08%)
char=65, length=524296: 350030.00 27725.30 ( 92.08%) 22256.20 ( 93.64%) 27723.40 ( 92.08%)
char=65, length=524297: 350067.00 27730.30 ( 92.08%) 22256.60 ( 93.64%) 27723.40 ( 92.08%)
char=65, length=524298: 350065.00 27780.90 ( 92.06%) 22258.40 ( 93.64%) 27726.20 ( 92.08%)
char=65, length=524299: 350032.00 27727.80 ( 92.08%) 22310.90 ( 93.63%) 27729.10 ( 92.08%)
char=65, length=524300: 350031.00 27726.20 ( 92.08%) 22256.90 ( 93.64%) 27726.90 ( 92.08%)
char=65, length=524301: 350076.00 27728.10 ( 92.08%) 22258.10 ( 93.64%) 27726.60 ( 92.08%)
char=65, length=524302: 350033.00 27805.30 ( 92.06%) 22259.40 ( 93.64%) 27730.30 ( 92.08%)
char=65, length=524303: 350037.00 27726.20 ( 92.08%) 22310.90 ( 93.63%) 27726.20 ( 92.08%)
char=65, length=1048576: 700696.00 56086.20 ( 92.00%) 45152.50 ( 93.56%) 56184.40 ( 91.98%)
char=65, length=1048577: 700768.00 56174.40 ( 91.98%) 45239.40 ( 93.54%) 56165.60 ( 91.99%)
char=65, length=1048578: 700814.00 56174.40 ( 91.98%) 45235.00 ( 93.00%) 56166.20 ( 91.99%)
char=65, length=1048579: 700828.00 56175.60 ( 91.98%) 45352.50 ( 93.53%) 56170.00 ( 91.00%)
char=65, length=1048580: 700767.00 56173.10 ( 91.98%) 45243.10 ( 93.54%) 56278.80 ( 91.97%)
char=65, length=1048581: 700769.00 56170.60 ( 91.98%) 45240.60 ( 93.54%) 56168.80 ( 91.98%)
char=65, length=1048582: 700828.00 56170.60 ( 91.99%) 45236.20 ( 93.55%) 56167.50 ( 91.99%)
char=65, length=1048583: 700772.00 56270.00 ( 91.00%) 45245.00 ( 93.00%) 56166.90 ( 91.98%)
char=65, length=1048584: 700838.00 56163.10 ( 91.99%) 45237.50 ( 93.55%) 56273.10 ( 91.97%)
char=65, length=1048585: 700774.00 56172.50 ( 91.98%) 45242.50 ( 93.54%) 56166.20 ( 91.99%)
char=65, length=1048586: 700825.00 56168.80 ( 91.99%) 45241.90 ( 93.54%) 56169.40 ( 91.99%)
char=65, length=1048587: 700779.00 56257.50 ( 91.97%) 45240.60 ( 93.54%) 56165.00 ( 91.00%)
char=65, length=1048588: 700782.00 56170.00 ( 91.00%) 45235.60 ( 93.54%) 56318.80 ( 91.96%)
char=65, length=1048589: 700782.00 56172.50 ( 91.98%) 45239.40 ( 93.54%) 56168.80 ( 91.98%)
char=65, length=1048590: 700884.00 56172.50 ( 91.99%) 45240.60 ( 93.55%) 56168.80 ( 91.99%)
char=65, length=1048591: 700779.00 56275.00 ( 91.00%) 45250.60 ( 93.54%) 56165.00 ( 91.00%)
char=65, length=2097152: 1404250.00 114974.00 ( 91.81%) 93346.20 ( 93.35%) 114961.00 ( 91.81%)
char=65, length=2097153: 1404480.00 115174.00 ( 91.80%) 93290.00 ( 93.36%) 115355.00 ( 91.79%)
char=65, length=2097154: 1404370.00 115146.00 ( 91.80%) 93296.20 ( 93.36%) 115140.00 ( 91.80%)
char=65, length=2097155: 1404480.00 115169.00 ( 91.80%) 93301.20 ( 93.36%) 115150.00 ( 91.80%)
char=65, length=2097156: 1404360.00 115362.00 ( 91.79%) 93307.50 ( 93.36%) 115140.00 ( 91.80%)
char=65, length=2097157: 1404380.00 115151.00 ( 91.80%) 93302.50 ( 93.36%) 115355.00 ( 91.79%)
char=65, length=2097158: 1404490.00 115161.00 ( 91.80%) 93300.00 ( 93.36%) 115144.00 ( 91.80%)
char=65, length=2097159: 1404570.00 115142.00 ( 91.80%) 93323.80 ( 93.36%) 115132.00 ( 91.80%)
char=65, length=2097160: 1404360.00 115336.00 ( 91.79%) 93297.50 ( 93.36%) 115135.00 ( 91.80%)
char=65, length=2097161: 1404380.00 115160.00 ( 91.80%) 93491.20 ( 93.34%) 115155.00 ( 91.80%)
char=65, length=2097162: 1404430.00 115151.00 ( 91.80%) 93290.00 ( 93.36%) 115515.00 ( 91.77%)
char=65, length=2097163: 1404420.00 115158.00 ( 91.80%) 93290.00 ( 93.36%) 115139.00 ( 91.80%)
char=65, length=2097164: 1404490.00 115160.00 ( 91.80%) 93288.80 ( 93.36%) 115154.00 ( 91.80%)
char=65, length=2097165: 1404390.00 115366.00 ( 91.79%) 93305.00 ( 93.36%) 115142.00 ( 91.80%)
char=65, length=2097166: 1404360.00 115152.00 ( 91.80%) 93292.50 ( 93.36%) 115161.00 ( 91.80%)
char=65, length=2097167: 1404500.00 115154.00 ( 91.80%) 93296.20 ( 93.36%) 115134.00 ( 91.80%)
char=65, length=4194304: 2820350.00 241238.00 ( 91.45%) 197652.00 ( 92.99%) 241185.00 ( 91.45%)
char=65, length=4194305: 2820520.00 241565.00 ( 91.44%) 197990.00 ( 92.98%) 241602.00 ( 91.43%)
char=65, length=4194306: 2820130.00 241992.00 ( 91.42%) 198000.00 ( 92.98%) 241568.00 ( 91.43%)
char=65, length=4194307: 2820100.00 241585.00 ( 91.43%) 198388.00 ( 92.97%) 241562.00 ( 91.43%)
char=65, length=4194308: 2820390.00 241590.00 ( 91.43%) 197950.00 ( 92.98%) 242052.00 ( 91.42%)
char=65, length=4194309: 2820120.00 241582.00 ( 91.43%) 197992.00 ( 92.98%) 241550.00 ( 91.43%)
char=65, length=4194310: 2820440.00 241552.00 ( 91.44%) 197968.00 ( 92.98%) 241558.00 ( 91.44%)
char=65, length=4194311: 2820220.00 242058.00 ( 91.42%) 197992.00 ( 92.98%) 241562.00 ( 91.43%)
char=65, length=4194312: 2820160.00 242228.00 ( 91.41%) 197975.00 ( 92.98%) 241525.00 ( 91.44%)
char=65, length=4194313: 2820140.00 241562.00 ( 91.43%) 198012.00 ( 92.98%) 241572.00 ( 91.43%)
char=65, length=4194314: 2820120.00 241585.00 ( 91.43%) 197972.00 ( 92.98%) 241982.00 ( 91.42%)
char=65, length=4194315: 2820060.00 241588.00 ( 91.43%) 197965.00 ( 92.98%) 241532.00 ( 91.44%)
char=65, length=4194316: 2820440.00 241610.00 ( 91.43%) 197980.00 ( 92.98%) 241548.00 ( 91.44%)
char=65, length=4194317: 2820340.00 242028.00 ( 91.42%) 197978.00 ( 92.98%) 241555.00 ( 91.44%)
char=65, length=4194318: 2820130.00 241580.00 ( 91.43%) 198400.00 ( 92.96%) 241585.00 ( 91.43%)
char=65, length=4194319: 2820090.00 241565.00 ( 91.43%) 197982.00 ( 92.98%) 242000.00 ( 91.42%)
char=65, length=8388608: 5686230.00 528195.00 ( 90.71%) 440720.00 ( 92.25%) 529015.00 ( 90.70%)
char=65, length=8388609: 5685880.00 528735.00 ( 90.70%) 441455.00 ( 92.24%) 528695.00 ( 90.70%)
char=65, length=8388610: 5687520.00 528765.00 ( 90.70%) 441505.00 ( 92.24%) 528620.00 ( 90.71%)
char=65, length=8388611: 5686800.00 528835.00 ( 90.70%) 441535.00 ( 92.24%) 528595.00 ( 90.70%)
char=65, length=8388612: 5686580.00 528865.00 ( 90.70%) 441495.00 ( 92.24%) 528655.00 ( 90.70%)
char=65, length=8388613: 5686250.00 529820.00 ( 90.68%) 441500.00 ( 92.24%) 528715.00 ( 90.70%)
char=65, length=8388614: 5686860.00 529755.00 ( 90.68%) 441535.00 ( 92.24%) 528665.00 ( 90.70%)
char=65, length=8388615: 5686460.00 528785.00 ( 90.70%) 442750.00 ( 92.21%) 528630.00 ( 90.70%)
char=65, length=8388616: 5685890.00 528750.00 ( 90.70%) 442335.00 ( 92.22%) 528715.00 ( 90.70%)
char=65, length=8388617: 5685880.00 528725.00 ( 90.70%) 441430.00 ( 92.24%) 529835.00 ( 90.68%)
char=65, length=8388618: 5685860.00 528765.00 ( 90.70%) 441465.00 ( 92.24%) 530245.00 ( 90.67%)
char=65, length=8388619: 5686020.00 528745.00 ( 90.70%) 441575.00 ( 92.23%) 528655.00 ( 90.70%)
char=65, length=8388620: 5686700.00 528770.00 ( 90.70%) 441485.00 ( 92.24%) 528630.00 ( 90.70%)
char=65, length=8388621: 5686720.00 528760.00 ( 90.70%) 441480.00 ( 92.24%) 528790.00 ( 90.70%)
char=65, length=8388622: 5686460.00 528685.00 ( 90.70%) 441485.00 ( 92.24%) 528690.00 ( 90.70%)
char=65, length=8388623: 5686650.00 529960.00 ( 90.68%) 441530.00 ( 92.24%) 528665.00 ( 90.70%)
char=65, length=16777216: 11556900.00 1240880.00 ( 89.26%) 1063510.00 ( 90.80%) 1237420.00 ( 89.29%)
char=65, length=16777217: 11555500.00 1241940.00 ( 89.25%) 1064850.00 ( 90.78%) 1239080.00 ( 89.28%)
char=65, length=16777218: 11556100.00 1239600.00 ( 89.27%) 1064670.00 ( 90.79%) 1239120.00 ( 89.28%)
char=65, length=16777219: 11557500.00 1239590.00 ( 89.27%) 1064720.00 ( 90.79%) 1239060.00 ( 89.28%)
char=65, length=16777220: 11556800.00 1239630.00 ( 89.27%) 1064490.00 ( 90.79%) 1238970.00 ( 89.28%)
char=65, length=16777221: 11556500.00 1239710.00 ( 89.27%) 1064740.00 ( 90.79%) 1238990.00 ( 89.28%)
char=65, length=16777222: 11554100.00 1239530.00 ( 89.27%) 1064720.00 ( 90.78%) 1241280.00 ( 89.26%)
char=65, length=16777223: 11554700.00 1239180.00 ( 89.28%) 1064680.00 ( 90.79%) 1243280.00 ( 89.24%)
char=65, length=16777224: 11555400.00 1239620.00 ( 89.27%) 1064870.00 ( 90.78%) 1242300.00 ( 89.25%)
char=65, length=16777225: 11555100.00 1239920.00 ( 89.27%) 1066680.00 ( 90.77%) 1239330.00 ( 89.27%)
char=65, length=16777226: 11554900.00 1239530.00 ( 89.27%) 1067080.00 ( 90.77%) 1239040.00 ( 89.28%)
char=65, length=16777227: 11554700.00 1239610.00 ( 89.27%) 1067490.00 ( 90.76%) 1239530.00 ( 89.27%)
char=65, length=16777228: 11556700.00 1239540.00 ( 89.27%) 1070950.00 ( 90.73%) 1240180.00 ( 89.27%)
char=65, length=16777229: 11556400.00 1242020.00 ( 89.25%) 1065110.00 ( 90.78%) 1239150.00 ( 89.28%)
char=65, length=16777230: 11555200.00 1241370.00 ( 89.26%) 1064920.00 ( 90.78%) 1238960.00 ( 89.28%)
char=65, length=16777231: 11555200.00 1241740.00 ( 89.25%) 1064900.00 ( 90.78%) 1239230.00 ( 89.28%)
char=65, length=33554432: 23858600.00 3207660.00 ( 86.56%) 2856120.00 ( 88.03%) 3216300.00 ( 86.52%)
char=65, length=33554433: 23845700.00 3210100.00 ( 86.54%) 2866000.00 ( 87.98%) 3209200.00 ( 86.54%)
char=65, length=33554434: 23845600.00 3216460.00 ( 86.51%) 2858920.00 ( 88.01%) 3207800.00 ( 86.55%)
char=65, length=33554435: 23848200.00 3208580.00 ( 86.55%) 2857620.00 ( 88.02%) 3218360.00 ( 86.50%)
char=65, length=33554436: 23851300.00 3217440.00 ( 86.51%) 2859780.00 ( 88.01%) 3208920.00 ( 86.55%)
char=65, length=33554437: 23851900.00 3209140.00 ( 86.55%) 2857960.00 ( 88.02%) 3216940.00 ( 86.51%)
char=65, length=33554438: 23843600.00 3209840.00 ( 86.54%) 2867700.00 ( 87.97%) 3208880.00 ( 86.54%)
char=65, length=33554439: 23845100.00 3216820.00 ( 86.51%) 2859580.00 ( 88.01%) 3208260.00 ( 86.55%)
char=65, length=33554440: 23857500.00 3209280.00 ( 86.55%) 2858880.00 ( 88.02%) 3220500.00 ( 86.50%)
char=65, length=33554441: 23845800.00 3214880.00 ( 86.52%) 2859700.00 ( 88.01%) 3207680.00 ( 86.55%)
char=65, length=33554442: 23850700.00 3209820.00 ( 86.54%) 2856940.00 ( 88.02%) 3216120.00 ( 86.52%)
char=65, length=33554443: 23845100.00 3209980.00 ( 86.54%) 2874500.00 ( 87.95%) 3209320.00 ( 86.54%)
char=65, length=33554444: 23846100.00 3215820.00 ( 86.51%) 2858660.00 ( 88.01%) 3207520.00 ( 86.55%)
char=65, length=33554445: 23848600.00 3210100.00 ( 86.54%) 2856440.00 ( 88.02%) 3219680.00 ( 86.50%)
char=65, length=33554446: 23844300.00 3216220.00 ( 86.51%) 2859760.00 ( 88.01%) 3207000.00 ( 86.55%)
char=65, length=33554447: 23854000.00 3211120.00 ( 86.54%) 2858340.00 ( 88.02%) 3219580.00 ( 86.50%)
char=0, length=128: 89.05 11.35 ( 87.25%) 6.68 ( 92.50%) 11.36 ( 87.24%)
char=0, length=129: 89.78 15.02 ( 83.28%) 29.97 ( 66.62%) 24.54 ( 72.67%)
char=0, length=130: 91.37 21.36 ( 76.62%) 8.02 ( 91.23%) 15.02 ( 83.57%)
char=0, length=131: 92.06 21.35 ( 76.81%) 20.63 ( 77.60%) 15.02 ( 83.69%)
char=0, length=132: 91.71 15.02 ( 83.63%) 8.02 ( 91.26%) 15.03 ( 83.61%)
char=0, length=133: 92.37 15.02 ( 83.74%) 8.02 ( 91.32%) 15.03 ( 83.73%)
char=0, length=134: 94.03 15.03 ( 84.02%) 8.02 ( 91.48%) 15.02 ( 84.03%)
char=0, length=135: 94.72 15.02 ( 84.15%) 8.02 ( 91.54%) 15.08 ( 84.08%)
char=0, length=136: 94.48 11.35 ( 87.99%) 6.68 ( 92.93%) 11.36 ( 87.97%)
char=0, length=137: 95.04 15.02 ( 84.20%) 8.02 ( 91.56%) 15.03 ( 84.19%)
char=0, length=138: 96.74 15.03 ( 84.46%) 8.02 ( 91.71%) 15.02 ( 84.48%)
char=0, length=139: 97.39 15.02 ( 84.58%) 8.02 ( 91.77%) 15.02 ( 84.58%)
char=0, length=140: 97.04 15.02 ( 84.53%) 8.02 ( 91.74%) 15.03 ( 84.51%)
char=0, length=141: 97.82 15.02 ( 84.65%) 14.39 ( 85.29%) 20.56 ( 78.98%)
char=0, length=142: 99.38 15.02 ( 84.89%) 8.02 ( 91.93%) 15.04 ( 84.87%)
char=0, length=143: 100.04 20.75 ( 79.26%) 30.40 ( 69.61%) 30.64 ( 69.38%)
char=0, length=256: 174.51 30.35 ( 82.61%) 29.95 ( 82.84%) 30.35 ( 82.61%)
char=0, length=257: 175.08 29.89 ( 82.93%) 29.92 ( 82.91%) 29.91 ( 82.92%)
char=0, length=258: 176.75 29.89 ( 83.09%) 30.25 ( 82.88%) 30.11 ( 82.97%)
char=0, length=259: 177.41 29.92 ( 83.14%) 29.92 ( 83.14%) 29.94 ( 83.12%)
char=0, length=260: 177.07 21.03 ( 88.12%) 13.37 ( 92.45%) 21.39 ( 87.92%)
char=0, length=261: 177.84 29.92 ( 83.18%) 29.94 ( 83.16%) 29.92 ( 83.18%)
char=0, length=262: 179.43 30.70 ( 82.89%) 30.25 ( 83.14%) 30.26 ( 83.13%)
char=0, length=263: 180.07 29.89 ( 83.40%) 29.94 ( 83.37%) 29.89 ( 83.40%)
char=0, length=264: 179.82 17.05 ( 90.52%) 30.46 ( 83.06%) 30.70 ( 82.93%)
char=0, length=265: 180.41 36.29 ( 79.88%) 13.37 ( 92.59%) 21.39 ( 88.15%)
char=0, length=266: 182.08 21.03 ( 88.45%) 29.94 ( 83.56%) 29.92 ( 83.57%)
char=0, length=267: 182.74 23.93 ( 86.90%) 29.92 ( 83.63%) 29.89 ( 83.64%)
char=0, length=268: 182.42 21.03 ( 88.47%) 13.36 ( 92.67%) 21.37 ( 88.29%)
char=0, length=269: 183.17 21.03 ( 88.52%) 13.36 ( 92.70%) 21.37 ( 88.34%)
char=0, length=270: 184.76 29.92 ( 83.81%) 29.92 ( 83.81%) 29.94 ( 83.79%)
char=0, length=271: 185.40 21.03 ( 88.66%) 30.48 ( 83.56%) 37.04 ( 80.02%)
char=0, length=512: 345.14 39.48 ( 88.56%) 30.61 ( 91.13%) 39.43 ( 88.58%)
char=0, length=513: 345.80 39.69 ( 88.52%) 30.55 ( 91.16%) 39.46 ( 88.59%)
char=0, length=514: 347.49 39.48 ( 88.64%) 30.73 ( 91.16%) 39.52 ( 88.63%)
char=0, length=515: 348.16 39.53 ( 88.65%) 30.54 ( 91.23%) 39.80 ( 88.57%)
char=0, length=516: 347.94 39.65 ( 88.60%) 30.39 ( 91.26%) 39.67 ( 88.60%)
char=0, length=517: 348.47 39.49 ( 88.67%) 30.73 ( 91.18%) 39.45 ( 88.68%)
char=0, length=518: 350.13 39.73 ( 88.65%) 30.40 ( 91.32%) 39.66 ( 88.67%)
char=0, length=519: 350.81 39.55 ( 88.73%) 30.40 ( 91.34%) 39.67 ( 88.69%)
char=0, length=520: 350.47 39.51 ( 88.73%) 30.43 ( 91.32%) 39.52 ( 88.72%)
char=0, length=521: 351.25 39.55 ( 88.74%) 30.73 ( 91.25%) 39.46 ( 88.77%)
char=0, length=522: 352.81 39.51 ( 88.80%) 30.40 ( 91.38%) 39.51 ( 88.80%)
char=0, length=523: 353.50 39.50 ( 88.82%) 30.40 ( 91.40%) 39.49 ( 88.83%)
char=0, length=524: 353.23 39.52 ( 88.81%) 30.40 ( 91.39%) 39.48 ( 88.82%)
char=0, length=525: 353.81 39.50 ( 88.84%) 30.56 ( 91.36%) 39.46 ( 88.85%)
char=0, length=526: 355.48 39.50 ( 88.89%) 30.45 ( 91.43%) 39.45 ( 88.90%)
char=0, length=527: 356.16 39.53 ( 88.90%) 30.44 ( 91.45%) 39.50 ( 88.91%)
char=0, length=1024: 694.94 40.09 ( 94.23%) 41.36 ( 94.05%) 40.00 ( 94.24%)
char=0, length=1025: 695.61 41.33 ( 94.06%) 39.58 ( 94.31%) 41.30 ( 94.06%)
char=0, length=1026: 696.31 39.57 ( 94.32%) 39.66 ( 94.30%) 39.64 ( 94.31%)
char=0, length=1027: 696.96 39.76 ( 94.29%) 39.81 ( 94.29%) 39.68 ( 94.31%)
char=0, length=1028: 697.65 39.58 ( 94.33%) 40.26 ( 94.23%) 40.13 ( 94.25%)
char=0, length=1029: 698.27 39.59 ( 94.33%) 39.78 ( 94.30%) 39.61 ( 94.33%)
char=0, length=1030: 698.98 39.59 ( 94.34%) 39.56 ( 94.34%) 39.59 ( 94.34%)
char=0, length=1031: 699.61 39.54 ( 94.35%) 39.86 ( 94.30%) 39.65 ( 94.33%)
char=0, length=1032: 700.26 39.54 ( 94.35%) 39.54 ( 94.35%) 39.57 ( 94.35%)
char=0, length=1033: 701.05 39.52 ( 94.36%) 39.52 ( 94.36%) 39.52 ( 94.36%)
char=0, length=1034: 701.61 39.51 ( 94.37%) 39.51 ( 94.37%) 39.61 ( 94.36%)
char=0, length=1035: 702.27 40.55 ( 94.23%) 40.29 ( 94.26%) 40.09 ( 94.29%)
char=0, length=1036: 702.99 39.60 ( 94.37%) 39.97 ( 94.31%) 39.60 ( 94.37%)
char=0, length=1037: 703.60 39.53 ( 94.38%) 39.70 ( 94.36%) 39.54 ( 94.38%)
char=0, length=1038: 704.28 39.57 ( 94.38%) 40.00 ( 94.32%) 39.60 ( 94.38%)
char=0, length=1039: 704.98 42.79 ( 93.93%) 39.55 ( 94.39%) 42.79 ( 93.93%)
char=0, length=2048: 1377.88 43.49 ( 96.84%) 43.50 ( 96.84%) 42.97 ( 96.88%)
char=0, length=2049: 1378.53 42.91 ( 96.89%) 42.17 ( 96.94%) 42.79 ( 96.90%)
char=0, length=2050: 1379.20 42.18 ( 96.94%) 42.17 ( 96.94%) 42.44 ( 96.92%)
char=0, length=2051: 1379.88 42.18 ( 96.94%) 42.92 ( 96.89%) 43.01 ( 96.88%)
char=0, length=2052: 1380.55 42.17 ( 96.95%) 42.17 ( 96.95%) 42.17 ( 96.95%)
char=0, length=2053: 1381.30 42.17 ( 96.95%) 42.17 ( 96.95%) 42.17 ( 96.95%)
char=0, length=2054: 1381.87 40.33 ( 97.08%) 40.19 ( 97.09%) 41.66 ( 96.98%)
char=0, length=2055: 1382.64 42.91 ( 96.90%) 41.77 ( 96.98%) 42.91 ( 96.90%)
char=0, length=2056: 1383.31 41.76 ( 96.98%) 40.02 ( 97.11%) 41.69 ( 96.99%)
char=0, length=2057: 1383.98 41.87 ( 96.97%) 41.88 ( 96.97%) 41.74 ( 96.98%)
char=0, length=2058: 1384.54 40.24 ( 97.09%) 39.67 ( 97.14%) 41.25 ( 97.02%)
char=0, length=2059: 1385.29 40.25 ( 97.09%) 39.92 ( 97.12%) 41.24 ( 97.02%)
char=0, length=2060: 1385.88 40.25 ( 97.10%) 39.92 ( 97.12%) 41.24 ( 97.02%)
char=0, length=2061: 1386.74 40.26 ( 97.10%) 39.84 ( 97.13%) 41.24 ( 97.03%)
char=0, length=2062: 1387.24 40.26 ( 97.10%) 40.21 ( 97.10%) 41.24 ( 97.03%)
char=0, length=2063: 1387.96 40.25 ( 97.10%) 39.77 ( 97.13%) 41.24 ( 97.03%)
char=0, length=4096: 2743.77 86.29 ( 96.85%) 88.94 ( 96.76%) 88.93 ( 96.76%)
char=0, length=4097: 2744.41 86.36 ( 96.85%) 85.96 ( 96.87%) 86.00 ( 96.87%)
char=0, length=4098: 2745.35 81.22 ( 97.04%) 81.19 ( 97.04%) 81.24 ( 97.04%)
char=0, length=4099: 2745.85 82.83 ( 96.98%) 83.68 ( 96.95%) 84.08 ( 96.94%)
char=0, length=4100: 2746.42 82.44 ( 97.00%) 82.41 ( 97.00%) 82.39 ( 97.00%)
char=0, length=4101: 2747.07 80.61 ( 97.07%) 80.60 ( 97.07%) 79.81 ( 97.09%)
char=0, length=4102: 2747.74 76.10 ( 97.23%) 76.06 ( 97.23%) 76.04 ( 97.23%)
char=0, length=4103: 2748.39 72.99 ( 97.34%) 73.13 ( 97.34%) 72.94 ( 97.35%)
char=0, length=4104: 2749.53 70.73 ( 97.43%) 74.39 ( 97.29%) 73.67 ( 97.32%)
char=0, length=4105: 2749.77 70.57 ( 97.43%) 70.53 ( 97.44%) 70.63 ( 97.43%)
char=0, length=4106: 2750.62 71.07 ( 97.42%) 70.76 ( 97.43%) 71.01 ( 97.42%)
char=0, length=4107: 2751.10 65.91 ( 97.60%) 64.96 ( 97.64%) 65.96 ( 97.60%)
char=0, length=4108: 2751.73 65.01 ( 97.64%) 65.18 ( 97.63%) 65.10 ( 97.63%)
char=0, length=4109: 2752.66 63.35 ( 97.70%) 63.34 ( 97.70%) 63.48 ( 97.69%)
char=0, length=4110: 2753.10 63.35 ( 97.70%) 63.34 ( 97.70%) 63.47 ( 97.69%)
char=0, length=4111: 2753.93 63.34 ( 97.70%) 63.32 ( 97.70%) 63.34 ( 97.70%)
char=0, length=8192: 5475.47 201.91 ( 96.31%) 201.89 ( 96.31%) 201.84 ( 96.31%)
char=0, length=8193: 5476.50 195.81 ( 96.42%) 195.61 ( 96.43%) 195.51 ( 96.43%)
char=0, length=8194: 5477.21 193.20 ( 96.47%) 193.16 ( 96.47%) 193.23 ( 96.47%)
char=0, length=8195: 5477.89 190.24 ( 96.53%) 190.24 ( 96.53%) 190.19 ( 96.53%)
char=0, length=8196: 5478.22 190.95 ( 96.51%) 191.08 ( 96.51%) 191.07 ( 96.51%)
char=0, length=8197: 5479.14 189.02 ( 96.55%) 189.03 ( 96.55%) 189.00 ( 96.55%)
char=0, length=8198: 5479.47 190.96 ( 96.51%) 190.93 ( 96.52%) 190.87 ( 96.52%)
char=0, length=8199: 5480.86 181.83 ( 96.68%) 181.82 ( 96.68%) 181.82 ( 96.68%)
char=0, length=8200: 5480.87 181.17 ( 96.69%) 181.15 ( 96.69%) 181.16 ( 96.69%)
char=0, length=8201: 5481.89 175.25 ( 96.80%) 175.23 ( 96.80%) 177.17 ( 96.77%)
char=0, length=8202: 5482.13 175.54 ( 96.80%) 175.53 ( 96.80%) 175.56 ( 96.80%)
char=0, length=8203: 5483.16 171.68 ( 96.87%) 171.72 ( 96.87%) 171.67 ( 96.87%)
char=0, length=8204: 5483.47 171.66 ( 96.87%) 171.66 ( 96.87%) 171.72 ( 96.87%)
char=0, length=8205: 5484.54 171.51 ( 96.87%) 169.25 ( 96.91%) 169.52 ( 96.91%)
char=0, length=8206: 5484.82 166.02 ( 96.97%) 167.93 ( 96.94%) 168.25 ( 96.93%)
char=0, length=8207: 5485.50 164.35 ( 97.00%) 164.73 ( 97.00%) 164.33 ( 97.00%)
char=0, length=16384: 10938.90 437.46 ( 96.00%) 437.50 ( 96.00%) 437.44 ( 96.00%)
char=0, length=16385: 10939.60 437.37 ( 96.00%) 438.76 ( 95.99%) 437.35 ( 96.00%)
char=0, length=16386: 10941.00 440.32 ( 95.98%) 440.38 ( 95.97%) 440.15 ( 95.98%)
char=0, length=16387: 10941.10 437.51 ( 96.00%) 433.79 ( 96.04%) 433.82 ( 96.03%)
char=0, length=16388: 10941.60 431.89 ( 96.05%) 431.96 ( 96.05%) 431.80 ( 96.05%)
char=0, length=16389: 10942.30 431.90 ( 96.05%) 430.44 ( 96.07%) 431.71 ( 96.05%)
char=0, length=16390: 10942.90 433.76 ( 96.04%) 433.83 ( 96.04%) 433.72 ( 96.04%)
char=0, length=16391: 10949.00 460.79 ( 95.79%) 466.85 ( 95.74%) 466.83 ( 95.74%)
char=0, length=16392: 10945.40 468.13 ( 95.72%) 467.99 ( 95.72%) 467.92 ( 95.72%)
char=0, length=16393: 10945.90 468.09 ( 95.72%) 469.31 ( 95.71%) 469.28 ( 95.71%)
char=0, length=16394: 10946.00 471.50 ( 95.69%) 471.49 ( 95.69%) 471.53 ( 95.69%)
char=0, length=16395: 10947.10 466.06 ( 95.74%) 465.82 ( 95.74%) 465.88 ( 95.74%)
char=0, length=16396: 10948.30 467.75 ( 95.73%) 469.00 ( 95.72%) 470.77 ( 95.70%)
char=0, length=16397: 10947.70 470.38 ( 95.70%) 470.34 ( 95.70%) 470.29 ( 95.70%)
char=0, length=16398: 10948.40 467.84 ( 95.73%) 469.53 ( 95.71%) 467.89 ( 95.73%)
char=0, length=16399: 10949.00 464.76 ( 95.76%) 464.76 ( 95.76%) 464.87 ( 95.75%)
char=0, length=32768: 21865.80 1023.86 ( 95.32%) 1021.01 ( 95.33%) 1020.96 ( 95.33%)
char=0, length=32769: 21868.50 1022.50 ( 95.32%) 1022.56 ( 95.32%) 1022.46 ( 95.32%)
char=0, length=32770: 21868.90 1017.03 ( 95.35%) 1017.05 ( 95.35%) 1016.94 ( 95.35%)
char=0, length=32771: 21868.00 1014.07 ( 95.36%) 1014.38 ( 95.36%) 1013.99 ( 95.36%)
char=0, length=32772: 21870.80 1007.43 ( 95.39%) 1007.08 ( 95.40%) 1007.51 ( 95.39%)
char=0, length=32773: 21869.20 1004.68 ( 95.41%) 1004.64 ( 95.41%) 1007.75 ( 95.39%)
char=0, length=32774: 21871.10 1000.59 ( 95.43%) 1000.72 ( 95.42%) 1000.66 ( 95.42%)
char=0, length=32775: 21871.00 997.87 ( 95.44%) 997.89 ( 95.44%) 997.79 ( 95.44%)
char=0, length=32776: 21871.50 997.27 ( 95.44%) 998.44 ( 95.43%) 1003.08 ( 95.41%)
char=0, length=32777: 21873.30 1000.27 ( 95.43%) 1000.23 ( 95.43%) 999.92 ( 95.43%)
char=0, length=32778: 21872.70 998.50 ( 95.43%) 998.36 ( 95.44%) 998.24 ( 95.44%)
char=0, length=32779: 21876.10 993.00 ( 95.46%) 992.74 ( 95.46%) 993.07 ( 95.46%)
char=0, length=32780: 21874.40 988.51 ( 95.48%) 988.47 ( 95.48%) 991.38 ( 95.47%)
char=0, length=32781: 21874.40 983.75 ( 95.50%) 983.84 ( 95.50%) 984.22 ( 95.50%)
char=0, length=32782: 21875.20 979.88 ( 95.52%) 987.63 ( 95.49%) 984.61 ( 95.50%)
char=0, length=32783: 21877.20 992.55 ( 95.46%) 992.59 ( 95.46%) 992.70 ( 95.46%)
char=0, length=65536: 43721.60 2104.29 ( 95.19%) 2097.86 ( 95.20%) 2097.23 ( 95.20%)
char=0, length=65537: 43727.80 2101.09 ( 95.20%) 2100.62 ( 95.20%) 2101.45 ( 95.19%)
char=0, length=65538: 43730.10 2100.47 ( 95.20%) 2100.59 ( 95.20%) 2100.66 ( 95.20%)
char=0, length=65539: 43727.50 2099.88 ( 95.20%) 2099.45 ( 95.20%) 2101.52 ( 95.19%)
char=0, length=65540: 43727.70 2100.20 ( 95.20%) 2099.80 ( 95.20%) 2100.27 ( 95.20%)
char=0, length=65541: 43728.80 2097.07 ( 95.20%) 2106.13 ( 95.18%) 2099.10 ( 95.20%)
char=0, length=65542: 43729.90 2099.22 ( 95.20%) 2098.71 ( 95.20%) 2098.95 ( 95.20%)
char=0, length=65543: 43730.00 2100.70 ( 95.20%) 2095.47 ( 95.21%) 2094.88 ( 95.21%)
char=0, length=65544: 43730.70 2094.10 ( 95.21%) 2094.26 ( 95.21%) 2093.91 ( 95.21%)
char=0, length=65545: 43734.40 2086.91 ( 95.23%) 2087.11 ( 95.23%) 2087.03 ( 95.23%)
char=0, length=65546: 43732.10 2085.78 ( 95.23%) 2086.52 ( 95.23%) 2096.05 ( 95.21%)
char=0, length=65547: 43733.50 2083.28 ( 95.24%) 2083.91 ( 95.23%) 2083.32 ( 95.24%)
char=0, length=65548: 43734.10 2079.06 ( 95.25%) 2084.41 ( 95.23%) 2078.09 ( 95.25%)
char=0, length=65549: 43734.10 2075.00 ( 95.26%) 2074.73 ( 95.26%) 2074.34 ( 95.26%)
char=0, length=65550: 43749.70 2081.84 ( 95.24%) 2076.37 ( 95.25%) 2080.39 ( 95.24%)
char=0, length=65551: 43735.50 2080.08 ( 95.24%) 2079.53 ( 95.25%) 2079.30 ( 95.25%)
char=0, length=131072: 87453.10 4309.38 ( 95.07%) 4314.61 ( 95.07%) 4314.38 ( 95.07%)
char=0, length=131073: 87453.40 4338.75 ( 95.04%) 4340.39 ( 95.04%) 4352.97 ( 95.02%)
char=0, length=131074: 87451.60 4336.88 ( 95.04%) 4336.88 ( 95.04%) 4335.70 ( 95.04%)
char=0, length=131075: 87451.60 4336.95 ( 95.04%) 4348.52 ( 95.03%) 4336.56 ( 95.04%)
char=0, length=131076: 87451.90 4334.22 ( 95.04%) 4333.59 ( 95.04%) 4333.36 ( 95.04%)
char=0, length=131077: 87469.20 4333.52 ( 95.05%) 4333.75 ( 95.05%) 4334.61 ( 95.04%)
char=0, length=131078: 87454.70 4330.39 ( 95.05%) 4329.53 ( 95.05%) 4329.61 ( 95.05%)
char=0, length=131079: 87461.40 4327.03 ( 95.05%) 4326.48 ( 95.05%) 4326.56 ( 95.05%)
char=0, length=131080: 87454.50 4326.72 ( 95.05%) 4336.88 ( 95.04%) 4327.81 ( 95.05%)
char=0, length=131081: 87454.10 4324.69 ( 95.05%) 4324.69 ( 95.05%) 4324.53 ( 95.06%)
char=0, length=131082: 87464.40 4336.80 ( 95.04%) 4325.23 ( 95.05%) 4324.38 ( 95.06%)
char=0, length=131083: 87457.90 4324.92 ( 95.05%) 4324.30 ( 95.06%) 4326.09 ( 95.05%)
char=0, length=131084: 87463.20 4319.30 ( 95.06%) 4318.75 ( 95.06%) 4319.30 ( 95.06%)
char=0, length=131085: 87458.40 4356.72 ( 95.02%) 4519.92 ( 94.83%) 4510.86 ( 94.84%)
char=0, length=131086: 87479.50 4447.97 ( 94.92%) 4449.53 ( 94.91%) 4450.31 ( 94.91%)
char=0, length=131087: 87480.60 4477.58 ( 94.88%) 4463.28 ( 94.90%) 4460.47 ( 94.90%)
char=0, length=262144: 174931.00 8951.09 ( 94.88%) 8947.66 ( 94.89%) 8946.88 ( 94.89%)
char=0, length=262145: 174949.00 8966.09 ( 94.88%) 8967.19 ( 94.87%) 8967.34 ( 94.87%)
char=0, length=262146: 174935.00 8965.47 ( 94.87%) 8962.19 ( 94.88%) 8985.62 ( 94.86%)
char=0, length=262147: 174932.00 8960.16 ( 94.88%) 8961.09 ( 94.88%) 8958.12 ( 94.88%)
char=0, length=262148: 174956.00 8984.06 ( 94.86%) 8957.50 ( 94.88%) 8956.25 ( 94.88%)
char=0, length=262149: 174935.00 8955.94 ( 94.88%) 8952.97 ( 94.88%) 8953.91 ( 94.88%)
char=0, length=262150: 174946.00 8950.16 ( 94.88%) 8949.22 ( 94.88%) 8948.12 ( 94.89%)
char=0, length=262151: 174935.00 8947.03 ( 94.89%) 8947.97 ( 94.88%) 8968.91 ( 94.87%)
char=0, length=262152: 174932.00 8942.97 ( 94.89%) 8941.56 ( 94.89%) 8942.97 ( 94.89%)
char=0, length=262153: 174955.00 8962.19 ( 94.88%) 8938.75 ( 94.89%) 8939.53 ( 94.89%)
char=0, length=262154: 174938.00 8936.09 ( 94.89%) 8938.59 ( 94.89%) 8936.72 ( 94.89%)
char=0, length=262155: 174954.00 8931.72 ( 94.89%) 8931.88 ( 94.89%) 8931.72 ( 94.89%)
char=0, length=262156: 174938.00 8930.31 ( 94.90%) 8931.09 ( 94.89%) 8955.00 ( 94.00%)
char=0, length=262157: 174937.00 8927.19 ( 94.90%) 8926.56 ( 94.90%) 8928.75 ( 94.90%)
char=0, length=262158: 174955.00 8927.34 ( 94.90%) 8950.62 ( 94.88%) 8927.19 ( 94.90%)
char=0, length=262159: 174940.00 8923.44 ( 94.90%) 8924.22 ( 94.90%) 8922.19 ( 94.90%)
char=0, length=524288: 350005.00 18026.60 ( 94.85%) 18025.60 ( 94.85%) 18030.30 ( 94.85%)
char=0, length=524289: 350030.00 18066.60 ( 94.84%) 18070.30 ( 94.84%) 18109.40 ( 94.83%)
char=0, length=524290: 350023.00 18059.10 ( 94.84%) 18060.30 ( 94.84%) 18078.10 ( 94.84%)
char=0, length=524291: 350050.00 18065.00 ( 94.00%) 18112.80 ( 94.83%) 18058.10 ( 94.84%)
char=0, length=524292: 350024.00 18061.60 ( 94.84%) 18056.90 ( 94.84%) 18052.80 ( 94.84%)
char=0, length=524293: 350050.00 18081.20 ( 94.83%) 18052.80 ( 94.84%) 18052.20 ( 94.84%)
char=0, length=524294: 350029.00 18046.20 ( 94.84%) 18052.50 ( 94.84%) 18100.60 ( 94.83%)
char=0, length=524295: 350023.00 18068.10 ( 94.84%) 18072.50 ( 94.84%) 18047.80 ( 94.84%)
char=0, length=524296: 350058.00 18044.70 ( 94.85%) 18107.80 ( 94.83%) 18050.60 ( 94.84%)
char=0, length=524297: 350036.00 18054.40 ( 94.84%) 18065.30 ( 94.84%) 18078.10 ( 94.84%)
char=0, length=524298: 350059.00 18048.80 ( 94.84%) 18041.20 ( 94.85%) 18046.90 ( 94.84%)
char=0, length=524299: 350035.00 18035.60 ( 94.85%) 18043.10 ( 94.85%) 18106.90 ( 94.83%)
char=0, length=524300: 350025.00 18041.60 ( 94.85%) 18035.90 ( 94.85%) 18031.90 ( 94.85%)
char=0, length=524301: 350067.00 18041.20 ( 94.85%) 18046.20 ( 94.84%) 18044.70 ( 94.85%)
char=0, length=524302: 350038.00 18058.80 ( 94.84%) 18033.40 ( 94.85%) 18031.90 ( 94.85%)
char=0, length=524303: 350056.00 18035.60 ( 94.85%) 18031.20 ( 94.85%) 18027.50 ( 94.85%)
char=0, length=1048576: 700696.00 36788.10 ( 94.75%) 36801.20 ( 94.75%) 36880.00 ( 94.00%)
char=0, length=1048577: 700763.00 36894.40 ( 94.74%) 36880.00 ( 94.00%) 36901.90 ( 94.73%)
char=0, length=1048578: 700834.00 36983.80 ( 94.72%) 36873.80 ( 94.74%) 36873.80 ( 94.74%)
char=0, length=1048579: 700771.00 36878.80 ( 94.74%) 36875.60 ( 94.74%) 36875.60 ( 94.74%)
char=0, length=1048580: 700842.00 36882.50 ( 94.74%) 36877.50 ( 94.74%) 36868.80 ( 94.74%)
char=0, length=1048581: 700776.00 36875.60 ( 94.74%) 36889.40 ( 94.74%) 36970.00 ( 94.00%)
char=0, length=1048582: 700769.00 36866.20 ( 94.74%) 36870.00 ( 94.00%) 36861.90 ( 94.74%)
char=0, length=1048583: 700830.00 36962.50 ( 94.73%) 36867.50 ( 94.74%) 36856.90 ( 94.74%)
char=0, length=1048584: 700769.00 36853.10 ( 94.74%) 36868.80 ( 94.74%) 36860.60 ( 94.74%)
char=0, length=1048585: 700858.00 36877.50 ( 94.74%) 36852.50 ( 94.74%) 36865.60 ( 94.74%)
char=0, length=1048586: 700768.00 36885.00 ( 94.00%) 36959.40 ( 94.73%) 36860.00 ( 94.00%)
char=0, length=1048587: 700759.00 36861.90 ( 94.74%) 36856.20 ( 94.74%) 36855.00 ( 94.00%)
char=0, length=1048588: 700881.00 36857.50 ( 94.74%) 36855.60 ( 94.74%) 36856.20 ( 94.74%)
char=0, length=1048589: 700782.00 36861.90 ( 94.74%) 36857.50 ( 94.74%) 36947.50 ( 94.73%)
char=0, length=1048590: 700762.00 36854.40 ( 94.74%) 36871.90 ( 94.74%) 36841.90 ( 94.74%)
char=0, length=1048591: 700778.00 36840.00 ( 94.00%) 36936.90 ( 94.73%) 36838.10 ( 94.74%)
char=0, length=2097152: 1404200.00 76447.50 ( 94.56%) 76421.20 ( 94.56%) 76456.20 ( 94.56%)
char=0, length=2097153: 1404640.00 76618.80 ( 94.55%) 76603.80 ( 94.55%) 76602.50 ( 94.55%)
char=0, length=2097154: 1404380.00 76608.80 ( 94.55%) 76617.50 ( 94.54%) 76823.80 ( 94.53%)
char=0, length=2097155: 1404330.00 76590.00 ( 94.55%) 76611.20 ( 94.54%) 76617.50 ( 94.54%)
char=0, length=2097156: 1404440.00 76618.80 ( 94.54%) 76585.00 ( 94.55%) 76581.20 ( 94.55%)
char=0, length=2097157: 1404350.00 76622.50 ( 94.54%) 76607.50 ( 94.54%) 76902.50 ( 94.52%)
char=0, length=2097158: 1404350.00 76637.50 ( 94.54%) 76603.80 ( 94.55%) 76575.00 ( 94.55%)
char=0, length=2097159: 1404360.00 76772.50 ( 94.53%) 76592.50 ( 94.55%) 76582.50 ( 94.55%)
char=0, length=2097160: 1404350.00 76597.50 ( 94.55%) 76591.20 ( 94.55%) 76595.00 ( 94.55%)
char=0, length=2097161: 1404510.00 76572.50 ( 94.55%) 76606.20 ( 94.55%) 76578.80 ( 94.55%)
char=0, length=2097162: 1404350.00 76590.00 ( 94.55%) 76893.80 ( 94.52%) 76617.50 ( 94.54%)
char=0, length=2097163: 1404360.00 76596.20 ( 94.55%) 76578.80 ( 94.55%) 76576.20 ( 94.55%)
char=0, length=2097164: 1404480.00 76587.50 ( 94.55%) 76603.80 ( 94.55%) 76566.20 ( 94.55%)
char=0, length=2097165: 1404340.00 76568.80 ( 94.55%) 76575.00 ( 94.55%) 76788.80 ( 94.53%)
char=0, length=2097166: 1404330.00 76557.50 ( 94.55%) 76595.00 ( 94.55%) 76553.80 ( 94.55%)
char=0, length=2097167: 1404410.00 76900.00 ( 94.52%) 76600.00 ( 94.55%) 76605.00 ( 94.55%)
char=0, length=4194304: 2819960.00 164248.00 ( 94.18%) 164188.00 ( 94.18%) 164615.00 ( 94.16%)
char=0, length=4194305: 2820080.00 164570.00 ( 94.16%) 164515.00 ( 94.17%) 164515.00 ( 94.17%)
char=0, length=4194306: 2820130.00 164882.00 ( 94.15%) 164510.00 ( 94.17%) 164490.00 ( 94.17%)
char=0, length=4194307: 2820060.00 164525.00 ( 94.17%) 164490.00 ( 94.17%) 164925.00 ( 94.15%)
char=0, length=4194308: 2820290.00 164582.00 ( 94.16%) 164532.00 ( 94.17%) 164535.00 ( 94.17%)
char=0, length=4194309: 2820240.00 164968.00 ( 94.15%) 164530.00 ( 94.17%) 164542.00 ( 94.17%)
char=0, length=4194310: 2820120.00 164585.00 ( 94.16%) 164525.00 ( 94.17%) 164940.00 ( 94.15%)
char=0, length=4194311: 2820080.00 164525.00 ( 94.17%) 164562.00 ( 94.16%) 164600.00 ( 94.16%)
char=0, length=4194312: 2820180.00 164945.00 ( 94.15%) 164535.00 ( 94.17%) 164485.00 ( 94.17%)
char=0, length=4194313: 2820330.00 164530.00 ( 94.17%) 164498.00 ( 94.17%) 164985.00 ( 94.15%)
char=0, length=4194314: 2820070.00 164518.00 ( 94.17%) 164510.00 ( 94.17%) 164460.00 ( 94.17%)
char=0, length=4194315: 2820420.00 164492.00 ( 94.17%) 164522.00 ( 94.17%) 164475.00 ( 94.17%)
char=0, length=4194316: 2820140.00 164508.00 ( 94.17%) 164488.00 ( 94.17%) 164868.00 ( 94.15%)
char=0, length=4194317: 2820080.00 164485.00 ( 94.17%) 164500.00 ( 94.17%) 164502.00 ( 94.17%)
char=0, length=4194318: 2820680.00 164532.00 ( 94.17%) 164518.00 ( 94.17%) 164502.00 ( 94.17%)
char=0, length=4194319: 2820180.00 164525.00 ( 94.17%) 164462.00 ( 94.17%) 164970.00 ( 94.15%)
char=0, length=8388608: 5685840.00 373395.00 ( 93.43%) 373475.00 ( 93.43%) 373445.00 ( 93.43%)
char=0, length=8388609: 5686800.00 374150.00 ( 93.42%) 374170.00 ( 93.42%) 374020.00 ( 93.42%)
char=0, length=8388610: 5686080.00 375035.00 ( 93.40%) 374200.00 ( 93.42%) 374115.00 ( 93.42%)
char=0, length=8388611: 5686490.00 374250.00 ( 93.42%) 374165.00 ( 93.42%) 375250.00 ( 93.40%)
char=0, length=8388612: 5685960.00 374165.00 ( 93.42%) 374225.00 ( 93.42%) 374140.00 ( 93.42%)
char=0, length=8388613: 5686520.00 374240.00 ( 93.42%) 374075.00 ( 93.42%) 374025.00 ( 93.42%)
char=0, length=8388614: 5686160.00 375100.00 ( 93.40%) 374165.00 ( 93.42%) 374255.00 ( 93.42%)
char=0, length=8388615: 5685680.00 374235.00 ( 93.42%) 374150.00 ( 93.42%) 375795.00 ( 93.39%)
char=0, length=8388616: 5686060.00 374180.00 ( 93.42%) 374260.00 ( 93.42%) 374075.00 ( 93.42%)
char=0, length=8388617: 5686820.00 374720.00 ( 93.41%) 374255.00 ( 93.42%) 374180.00 ( 93.42%)
char=0, length=8388618: 5686840.00 375260.00 ( 93.40%) 374260.00 ( 93.42%) 374110.00 ( 93.42%)
char=0, length=8388619: 5685940.00 374335.00 ( 93.42%) 374105.00 ( 93.42%) 375370.00 ( 93.40%)
char=0, length=8388620: 5686600.00 374270.00 ( 93.42%) 374355.00 ( 93.42%) 374285.00 ( 93.42%)
char=0, length=8388621: 5686900.00 374380.00 ( 93.42%) 374170.00 ( 93.42%) 374265.00 ( 93.42%)
char=0, length=8388622: 5686190.00 375115.00 ( 93.40%) 374170.00 ( 93.42%) 374140.00 ( 93.42%)
char=0, length=8388623: 5686120.00 374310.00 ( 93.42%) 374205.00 ( 93.42%) 375145.00 ( 93.40%)
char=0, length=16777216: 11556600.00 927050.00 ( 91.98%) 926490.00 ( 91.98%) 929410.00 ( 91.96%)
char=0, length=16777217: 11556300.00 928480.00 ( 91.97%) 927760.00 ( 91.97%) 928210.00 ( 91.97%)
char=0, length=16777218: 11557000.00 927920.00 ( 91.97%) 927650.00 ( 91.97%) 927750.00 ( 91.97%)
char=0, length=16777219: 11556500.00 927650.00 ( 91.97%) 927740.00 ( 91.97%) 927820.00 ( 91.97%)
char=0, length=16777220: 11556100.00 928040.00 ( 91.97%) 928120.00 ( 91.97%) 927920.00 ( 91.97%)
char=0, length=16777221: 11557300.00 928370.00 ( 91.97%) 928060.00 ( 91.97%) 927880.00 ( 91.97%)
char=0, length=16777222: 11555500.00 930660.00 ( 91.95%) 927880.00 ( 91.97%) 927850.00 ( 91.97%)
char=0, length=16777223: 11555100.00 930170.00 ( 91.95%) 927650.00 ( 91.97%) 927370.00 ( 91.97%)
char=0, length=16777224: 11554800.00 927730.00 ( 91.97%) 927670.00 ( 91.97%) 927470.00 ( 91.97%)
char=0, length=16777225: 11554400.00 928020.00 ( 91.97%) 930140.00 ( 91.95%) 928110.00 ( 91.97%)
char=0, length=16777226: 11556400.00 928410.00 ( 91.97%) 930530.00 ( 91.95%) 928090.00 ( 91.97%)
char=0, length=16777227: 11554800.00 928110.00 ( 91.97%) 927810.00 ( 91.97%) 930470.00 ( 91.95%)
char=0, length=16777228: 11554600.00 927920.00 ( 91.97%) 927680.00 ( 91.97%) 930330.00 ( 91.95%)
char=0, length=16777229: 11554300.00 928140.00 ( 91.97%) 927810.00 ( 91.97%) 927620.00 ( 91.97%)
char=0, length=16777230: 11557700.00 928630.00 ( 91.97%) 928020.00 ( 91.97%) 928330.00 ( 91.97%)
char=0, length=16777231: 11557400.00 927960.00 ( 91.97%) 927810.00 ( 91.97%) 927710.00 ( 91.97%)
char=0, length=33554432: 23849000.00 2573120.00 ( 89.21%) 2570860.00 ( 89.22%) 2578840.00 ( 89.19%)
char=0, length=33554433: 23842900.00 2575180.00 ( 89.20%) 2574520.00 ( 89.20%) 2574140.00 ( 89.20%)
char=0, length=33554434: 23844600.00 2575460.00 ( 89.20%) 2587200.00 ( 89.15%) 2575080.00 ( 89.20%)
char=0, length=33554435: 23845400.00 2582460.00 ( 89.17%) 2575700.00 ( 89.20%) 2573180.00 ( 89.21%)
char=0, length=33554436: 23846600.00 2577120.00 ( 89.19%) 2575840.00 ( 89.20%) 2575380.00 ( 89.20%)
char=0, length=33554437: 23842400.00 2575580.00 ( 89.20%) 2573600.00 ( 89.21%) 2583180.00 ( 89.17%)
char=0, length=33554438: 23844400.00 2575740.00 ( 89.20%) 2588780.00 ( 89.14%) 2574860.00 ( 89.20%)
char=0, length=33554439: 23844900.00 2582220.00 ( 89.17%) 2576200.00 ( 89.20%) 2574980.00 ( 89.20%)
char=0, length=33554440: 23846300.00 2575460.00 ( 89.20%) 2576280.00 ( 89.20%) 2573460.00 ( 89.21%)
char=0, length=33554441: 23846700.00 2575920.00 ( 89.20%) 2574840.00 ( 89.20%) 2583140.00 ( 89.17%)
char=0, length=33554442: 23843400.00 2575680.00 ( 89.20%) 2587860.00 ( 89.15%) 2575940.00 ( 89.20%)
char=0, length=33554443: 23845800.00 2581340.00 ( 89.17%) 2576300.00 ( 89.20%) 2573060.00 ( 89.21%)
char=0, length=33554444: 23846200.00 2575080.00 ( 89.20%) 2574740.00 ( 89.20%) 2574760.00 ( 89.20%)
char=0, length=33554445: 23848400.00 2575800.00 ( 89.20%) 2574520.00 ( 89.20%) 2582680.00 ( 89.17%)
char=0, length=33554446: 23843300.00 2576540.00 ( 89.19%) 2585700.00 ( 89.16%) 2576960.00 ( 89.19%)
char=0, length=33554447: 23843600.00 2581480.00 ( 89.17%) 2573440.00 ( 89.21%) 2575100.00 ( 89.20%)
Function: memset
Variant: large
__memset_falkor __memset_emag __memset_generic
===================================================================================
char=65, length=131072, alignment=0: 7447.50 5981.25 ( 19.69%) 7313.75 ( 1.80%)
char=65, length=131072, alignment=3: 7502.50 6106.25 ( 18.61%) 7471.25 ( 0.42%)
char=65, length=262144, alignment=0: 14488.80 11735.00 ( 19.01%) 14472.50 ( 0.11%)
char=65, length=262144, alignment=3: 14658.80 11925.00 ( 18.65%) 14652.50 ( 0.04%)
char=65, length=524288, alignment=0: 28862.50 23396.20 ( 18.94%) 28845.00 ( 0.06%)
char=65, length=524288, alignment=3: 29060.00 23566.20 ( 18.91%) 29031.20 ( 0.10%)
char=65, length=1048576, alignment=0: 57750.00 47821.20 ( 17.19%) 57756.20 ( -0.01%)
char=65, length=1048576, alignment=3: 57920.00 46955.00 ( 18.00%) 57876.20 ( 0.08%)
char=65, length=2097152, alignment=0: 115378.00 93431.20 ( 19.02%) 115271.00 ( 0.00%)
char=65, length=2097152, alignment=3: 116291.00 93697.50 ( 19.43%) 115482.00 ( 0.00%)
char=65, length=4194304, alignment=0: 230579.00 187225.00 ( 18.00%) 230462.00 ( 0.00%)
char=65, length=4194304, alignment=3: 230675.00 187350.00 ( 18.00%) 230659.00 ( 0.00%)
char=65, length=8388608, alignment=0: 461385.00 373762.00 ( 18.00%) 461208.00 ( 0.00%)
char=65, length=8388608, alignment=3: 461411.00 374159.00 ( 18.00%) 461056.00 ( 0.00%)
char=65, length=16777216, alignment=0: 927482.00 747779.00 ( 19.00%) 927250.00 ( 0.00%)
char=65, length=16777216, alignment=3: 922629.00 747954.00 ( 18.00%) 929646.00 ( -1.00%)
char=65, length=33554432, alignment=0: 1845110.00 1495970.00 ( 18.92%) 1844950.00 ( 0.01%)
char=65, length=33554432, alignment=3: 1845520.00 1496800.00 ( 18.90%) 1853950.00 ( -0.46%)
char=65, length=67108864, alignment=0: 3693140.00 2995700.00 ( 18.88%) 3692300.00 ( 0.02%)
char=65, length=67108864, alignment=3: 3694760.00 2995350.00 ( 18.93%) 3692880.00 ( 0.05%)
---
This version uses general register based memory store instead of
vector register based, for the former is faster than the latter
in emag.
The fact that DC ZVA size in emag is 64-byte, is used by IFUNC
dispatch to select this memset, so that cost of runtime-check on
DC ZVA size can be saved.
* sysdeps/aarch64/multiarch/Makefile (sysdep_routines):
Add memset_emag.
* sysdeps/aarch64/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add __memset_emag to memset ifunc.
* sysdeps/aarch64/multiarch/memset.c (libc_ifunc):
Add IS_EMAG check for ifunc dispatch.
* sysdeps/aarch64/multiarch/memset_base64.S: New file.
* sysdeps/aarch64/multiarch/memset_emag.S: New file.
---
ChangeLog | 11 ++
sysdeps/aarch64/multiarch/Makefile | 3 +-
sysdeps/aarch64/multiarch/ifunc-impl-list.c | 1 +
sysdeps/aarch64/multiarch/memset.c | 5 +-
sysdeps/aarch64/multiarch/memset_base64.S | 178 ++++++++++++++++++++++++++++
sysdeps/aarch64/multiarch/memset_emag.S | 32 +++++
6 files changed, 228 insertions(+), 2 deletions(-)
create mode 100644 sysdeps/aarch64/multiarch/memset_base64.S
create mode 100644 sysdeps/aarch64/multiarch/memset_emag.S
diff --git a/ChangeLog b/ChangeLog
index ee2119b..b4c07e2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2018-12-17 Feng Xue <fxue@os.amperecomputing.com>
+ * sysdeps/aarch64/multiarch/Makefile (sysdep_routines):
+ Add memset_emag.
+ * sysdeps/aarch64/multiarch/ifunc-impl-list.c
+ (__libc_ifunc_impl_list): Add __memset_emag to memset ifunc.
+ * sysdeps/aarch64/multiarch/memset.c (libc_ifunc):
+ Add IS_EMAG check for ifunc dispatch.
+ * sysdeps/aarch64/multiarch/memset_base64.S: New file.
+ * sysdeps/aarch64/multiarch/memset_emag.S: New file.
+
+2018-12-17 Feng Xue <fxue@os.amperecomputing.com>
+
* manual/tunables.texi (Tunable glibc.cpu.name): Add emag.
* sysdeps/unix/sysv/linux/aarch64/cpu-features.c (cpu_list):
Add emag.
diff --git a/sysdeps/aarch64/multiarch/Makefile b/sysdeps/aarch64/multiarch/Makefile
index b1a5f59..3c6c879 100644
--- a/sysdeps/aarch64/multiarch/Makefile
+++ b/sysdeps/aarch64/multiarch/Makefile
@@ -1,5 +1,6 @@
ifeq ($(subdir),string)
sysdep_routines += memcpy_generic memcpy_thunderx memcpy_thunderx2 \
- memcpy_falkor memmove_falkor memset_generic memset_falkor \
+ memcpy_falkor memmove_falkor \
+ memset_generic memset_falkor memset_emag \
strlen_generic strlen_asimd
endif
diff --git a/sysdeps/aarch64/multiarch/ifunc-impl-list.c b/sysdeps/aarch64/multiarch/ifunc-impl-list.c
index af44665..6d4dbbe 100644
--- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c
+++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c
@@ -51,6 +51,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
/* Enable this on non-falkor processors too so that other cores
can do a comparative analysis with __memset_generic. */
IFUNC_IMPL_ADD (array, i, memset, (zva_size == 64), __memset_falkor)
+ IFUNC_IMPL_ADD (array, i, memset, (zva_size == 64), __memset_emag)
IFUNC_IMPL_ADD (array, i, memset, 1, __memset_generic))
IFUNC_IMPL (i, name, strlen,
diff --git a/sysdeps/aarch64/multiarch/memset.c b/sysdeps/aarch64/multiarch/memset.c
index d74ed3a..9c713e0 100644
--- a/sysdeps/aarch64/multiarch/memset.c
+++ b/sysdeps/aarch64/multiarch/memset.c
@@ -29,12 +29,15 @@
extern __typeof (__redirect_memset) __libc_memset;
extern __typeof (__redirect_memset) __memset_falkor attribute_hidden;
+extern __typeof (__redirect_memset) __memset_emag attribute_hidden;
extern __typeof (__redirect_memset) __memset_generic attribute_hidden;
libc_ifunc (__libc_memset,
((IS_FALKOR (midr) || IS_PHECDA (midr)) && zva_size == 64
? __memset_falkor
- : __memset_generic));
+ : (IS_EMAG (midr) && zva_size == 64
+ ? __memset_emag
+ : __memset_generic)));
# undef memset
strong_alias (__libc_memset, memset);
diff --git a/sysdeps/aarch64/multiarch/memset_base64.S b/sysdeps/aarch64/multiarch/memset_base64.S
new file mode 100644
index 0000000..9a62325
--- /dev/null
+++ b/sysdeps/aarch64/multiarch/memset_base64.S
@@ -0,0 +1,178 @@
+/* Copyright (C) 2018 Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include "memset-reg.h"
+
+#ifndef MEMSET
+# define MEMSET __memset_base64
+#endif
+
+#ifndef DC_ZVA_THRESHOLD
+# define DC_ZVA_THRESHOLD 512
+#endif
+
+/* Assumptions:
+ *
+ * ARMv8-a, AArch64, unaligned accesses
+ *
+ */
+
+ENTRY_ALIGN (MEMSET, 6)
+
+ DELOUSE (0)
+ DELOUSE (2)
+
+ bfi valw, valw, 8, 8
+ bfi valw, valw, 16, 16
+ bfi val, val, 32, 32
+
+ add dstend, dstin, count
+
+ cmp count, 96
+ b.hi L(set_long)
+ cmp count, 16
+ b.hs L(set_medium)
+
+ /* Set 0..15 bytes. */
+ tbz count, 3, 1f
+ str val, [dstin]
+ str val, [dstend, -8]
+ ret
+
+ .p2align 3
+1: tbz count, 2, 2f
+ str valw, [dstin]
+ str valw, [dstend, -4]
+ ret
+2: cbz count, 3f
+ strb valw, [dstin]
+ tbz count, 1, 3f
+ strh valw, [dstend, -2]
+3: ret
+
+ .p2align 3
+ /* Set 16..96 bytes. */
+L(set_medium):
+ stp val, val, [dstin]
+ tbnz count, 6, L(set96)
+ stp val, val, [dstend, -16]
+ tbz count, 5, 1f
+ stp val, val, [dstin, 16]
+ stp val, val, [dstend, -32]
+1: ret
+
+ .p2align 4
+ /* Set 64..96 bytes. Write 64 bytes from the start and
+ 32 bytes from the end. */
+L(set96):
+ stp val, val, [dstin, 16]
+ stp val, val, [dstin, 32]
+ stp val, val, [dstin, 48]
+ stp val, val, [dstend, -32]
+ stp val, val, [dstend, -16]
+ ret
+
+ .p2align 4
+L(set_long):
+ stp val, val, [dstin]
+ cmp count, DC_ZVA_THRESHOLD
+ ccmp val, 0, 0, cs
+ bic dst, dstin, 15
+ b.eq L(zva_64)
+
+ /* Small-size or non-zero memset does not use DC ZVA. */
+ sub count, dstend, dst
+
+ /*
+ * Adjust count and bias for loop. By substracting extra 1 from count,
+ * it is easy to use tbz instruction to check whether loop tailing
+ * count is less than 33 bytes, so as to bypass 2 unneccesary stps.
+ */
+ sub count, count, 64+16+1
+ nop
+
+1: stp val, val, [dst, 16]
+ stp val, val, [dst, 32]
+ stp val, val, [dst, 48]
+ stp val, val, [dst, 64]!
+ subs count, count, 64
+ b.hs 1b
+
+ tbz count, 5, 1f /* Remaining count is less than 33 bytes? */
+ stp val, val, [dst, 16]
+ stp val, val, [dst, 32]
+1: stp val, val, [dstend, -32]
+ stp val, val, [dstend, -16]
+ ret
+
+ .p2align 3
+L(zva_64):
+ stp val, val, [dst, 16]
+ stp val, val, [dst, 32]
+ stp val, val, [dst, 48]
+ bic dst, dst, 63
+
+ /*
+ * Previous memory writes might cross cache line boundary, and cause
+ * cache line partially dirty. Zeroing this kind of cache line using
+ * DC ZVA will incur extra cost, for it requires loading untouched
+ * part of the line from memory before zeoring.
+ *
+ * So, write the first 64 byte aligned block using stp to force
+ * fully dirty cache line.
+ */
+ stp val, val, [dst, 64]
+ stp val, val, [dst, 80]
+ stp val, val, [dst, 96]
+ stp val, val, [dst, 112]
+
+ sub count, dstend, dst
+ /*
+ * Adjust count and bias for loop. By substracting extra 1 from count,
+ * it is easy to use tbz instruction to check whether loop tailing
+ * count is less than 33 bytes, so as to bypass 2 unneccesary stps.
+ */
+ sub count, count, 128+64+64+1
+ add dst, dst, 128
+ nop
+
+ /* DC ZVA sets 64 bytes each time. */
+1: dc zva, dst
+ add dst, dst, 64
+ subs count, count, 64
+ b.hs 1b
+
+ /*
+ * Write the last 64 byte aligned block using stp to force fully
+ * dirty cache line.
+ */
+ stp val, val, [dst, 0]
+ stp val, val, [dst, 16]
+ stp val, val, [dst, 32]
+ stp val, val, [dst, 48]
+
+ tbz count, 5, 1f /* Remaining count is less than 33 bytes? */
+ stp val, val, [dst, 64]
+ stp val, val, [dst, 80]
+1: stp val, val, [dstend, -32]
+ stp val, val, [dstend, -16]
+ ret
+
+END (MEMSET)
+libc_hidden_builtin_def (MEMSET)
diff --git a/sysdeps/aarch64/multiarch/memset_emag.S b/sysdeps/aarch64/multiarch/memset_emag.S
new file mode 100644
index 0000000..1c1fabc
--- /dev/null
+++ b/sysdeps/aarch64/multiarch/memset_emag.S
@@ -0,0 +1,32 @@
+/* Optimized memset for AmpereComputing emag processor.
+ Copyright (C) 2018 Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#if IS_IN (libc)
+# define MEMSET __memset_emag
+
+/*
+ * Using dc zva to zero memory does not produce better performance if
+ * memory size is not very large, especially when there are multiple
+ * processes/threads contending memory/cache. Here we use a somewhat
+ * large threshold to trigger usage of dc zva.
+*/
+# define DC_ZVA_THRESHOLD 1024
+
+# include "./memset_base64.S"
+#endif
--
1.8.3.1