Last active
June 15, 2016 09:18
-
-
Save Centril/5a0dbf6a46e73e3913388214c0e2fa52 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int[] distribute0( int total, int nBuckets ) { | |
int[] buckets = new int[nBuckets]; | |
int j = 0; | |
while ( total > 0 ) { | |
if ( j > buckets.length - 1 ) j = 0; | |
buckets[j] = buckets[j] + 1; | |
total--; | |
j++; | |
} | |
return buckets; | |
} | |
int[] distribute1( int total, int nBuckets ) { | |
int[] buckets = new int[nBuckets]; | |
for ( int i = 0; i < nBuckets; total -= buckets[i++] ) { | |
int tablesLeft = nBuckets - i; | |
buckets[i] = (total + tablesLeft - 1) / tablesLeft; | |
} | |
return buckets; | |
} | |
int[] distribute2( int total, int nBuckets ) { | |
int bucketWithExtra = total % nBuckets; | |
int minPerBucket = (int) (total / nBuckets); | |
int[] buckets = new int[nBuckets]; | |
for (int i = 0; i < nBuckets; ++i) { | |
buckets[i] = minPerBucket; | |
if (i < bucketWithExtra) buckets[i]++; | |
} | |
return buckets; | |
} | |
int[] distribute3( int total, int nBuckets ) { | |
int bucketsWithExtra = total % nBuckets; | |
int[] buckets = new int[nBuckets]; | |
Arrays.fill( buckets, (int) (total / nBuckets) ); | |
for (int i = 0; i < bucketsWithExtra; ++i) buckets[i]++; | |
return buckets; | |
} | |
int[] distribute4( int total, int nBuckets ) { | |
int bucketsWithExtra = total % nBuckets; | |
int minimumForAll = (int) (total / nBuckets); | |
int[] buckets = new int[nBuckets]; | |
Arrays.fill( buckets, 0, bucketsWithExtra, minimumForAll + 1 ); | |
Arrays.fill( buckets, bucketsWithExtra, nBuckets, minimumForAll ); | |
return buckets; | |
} | |
@groovy.transform.CompileStatic | |
int[] distribute5( int total, int nBuckets ) { | |
int[] buckets = new int[nBuckets]; | |
int minimum = (int) (total / nBuckets), | |
extra = minimum + 1, | |
nExtra = total % nBuckets, | |
i = 0; | |
while ( i < nExtra ) { buckets[i++] = extra; } | |
while ( i < nBuckets ) { buckets[i++] = minimum; } | |
return buckets; | |
} | |
void timeit( String message, int count, Closure cl) { | |
// Warming period | |
20.times { cl() } | |
def startTime = System.nanoTime() | |
count.times { cl() } | |
def deltaTime = (System.nanoTime() - startTime) / 1000 | |
def average = (deltaTime / count) | |
def dtDisp = deltaTime.setScale(1, BigDecimal.ROUND_HALF_UP ); | |
def avgDisp = average.setScale(1, BigDecimal.ROUND_HALF_UP ); | |
println "$message:\tcount: $count \ttime: $dtDisp \taverage: $avgDisp" | |
} | |
def benchX( c ) { | |
for ( int nb = 1; nb < 10; nb++ ) { | |
for ( int log = 1; log < 5; log++ ) { | |
int nBuckets = Math.pow( 10, log ) * nb; | |
int total1 = Math.pow(10, log ) * nBuckets; | |
int total2 = total1 / 2; | |
int total3 = total1 - 1; | |
for ( def total : [total1, total2, total3] ) | |
c( total, nBuckets ); | |
} | |
} | |
} | |
println "Average:" | |
//Will take too long: | |
//timeit("distribute0", 5) { benchX( distribute0 ) } | |
timeit("distribute1", 100 ) { benchX( distribute1 ) } | |
timeit("distribute2", 1000) { benchX( distribute2 ) } | |
timeit("distribute3", 1000) { benchX( distribute3 ) } | |
timeit("distribute4", 1000) { benchX( distribute4 ) } | |
timeit("distribute5", 1000) { benchX( distribute5 ) } | |
println "Individual:" | |
benchX { total, nb -> | |
println "Testing: (" + total + "," + nb + ")" | |
if ( total <= Math.pow( 10, 7 ) ) | |
timeit("distribute0", 5) { distribute0( total, nb ) } | |
timeit("distribute1", 100 ) { distribute1( total, nb ) } | |
timeit("distribute2", 1000) { distribute2( total, nb ) } | |
timeit("distribute3", 1000) { distribute3( total, nb ) } | |
timeit("distribute4", 1000) { distribute4( total, nb ) } | |
timeit("distribute5", 1000) { distribute5( total, nb ) } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Windows 10, Intel Core i7-3610QM, 2.3GHz, 16GB RAM, 256GB SSD | |
$ groovysh Test.groovy | |
Groovy Shell (2.4.4, JVM: 1.8.0_51) | |
Type ':help' or ':h' for help. | |
---------------------------------------------------------------------------------------------------------------- | |
groovy:000> :load Test.groovy | |
===> true | |
===> true | |
===> true | |
===> true | |
===> true | |
===> true | |
===> true | |
===> true | |
Average: | |
===> null | |
===> true | |
===> true | |
distribute1: count: 100 time: 1440123.3 average: 14401.2 | |
===> null | |
distribute2: count: 1000 time: 2562822.7 average: 2562.8 | |
===> null | |
distribute3: count: 1000 time: 1808702.6 average: 1808.7 | |
===> null | |
distribute4: count: 1000 time: 1703782.6 average: 1703.8 | |
===> null | |
distribute5: count: 1000 time: 1656276.4 average: 1656.3 | |
===> null | |
Individual: | |
===> null | |
Testing: (100,10) | |
distribute0: count: 5 time: 1103.1 average: 220.6 | |
distribute1: count: 100 time: 597.5 average: 6.0 | |
distribute2: count: 1000 time: 5730.0 average: 5.7 | |
distribute3: count: 1000 time: 7802.7 average: 7.8 | |
distribute4: count: 1000 time: 5265.5 average: 5.3 | |
distribute5: count: 1000 time: 5149.5 average: 5.1 | |
Testing: (50,10) | |
distribute0: count: 5 time: 356.5 average: 71.3 | |
distribute1: count: 100 time: 647.0 average: 6.5 | |
distribute2: count: 1000 time: 6672.4 average: 6.7 | |
distribute3: count: 1000 time: 3862.5 average: 3.9 | |
distribute4: count: 1000 time: 5488.6 average: 5.5 | |
distribute5: count: 1000 time: 2765.7 average: 2.8 | |
Testing: (99,10) | |
distribute0: count: 5 time: 628.3 average: 125.7 | |
distribute1: count: 100 time: 540.4 average: 5.4 | |
distribute2: count: 1000 time: 3764.8 average: 3.8 | |
distribute3: count: 1000 time: 5114.2 average: 5.1 | |
distribute4: count: 1000 time: 2654.6 average: 2.7 | |
distribute5: count: 1000 time: 2132.5 average: 2.1 | |
Testing: (10000,100) | |
distribute0: count: 5 time: 10229.3 average: 2045.9 | |
distribute1: count: 100 time: 253.0 average: 2.5 | |
distribute2: count: 1000 time: 2059.3 average: 2.1 | |
distribute3: count: 1000 time: 2282.0 average: 2.3 | |
distribute4: count: 1000 time: 1989.3 average: 2.0 | |
distribute5: count: 1000 time: 1938.4 average: 1.9 | |
Testing: (5000,100) | |
distribute0: count: 5 time: 7803.2 average: 1560.6 | |
distribute1: count: 100 time: 235.2 average: 2.4 | |
distribute2: count: 1000 time: 2051.3 average: 2.1 | |
distribute3: count: 1000 time: 2241.0 average: 2.2 | |
distribute4: count: 1000 time: 2140.5 average: 2.1 | |
distribute5: count: 1000 time: 2153.5 average: 2.2 | |
Testing: (9999,100) | |
distribute0: count: 5 time: 2712.2 average: 542.4 | |
distribute1: count: 100 time: 232.5 average: 2.3 | |
distribute2: count: 1000 time: 2048.6 average: 2.0 | |
distribute3: count: 1000 time: 3305.6 average: 3.3 | |
distribute4: count: 1000 time: 4557.8 average: 4.6 | |
distribute5: count: 1000 time: 2418.1 average: 2.4 | |
Testing: (1000000,1000) | |
distribute0: count: 5 time: 336221.2 average: 67244.2 | |
distribute1: count: 100 time: 1044.2 average: 10.4 | |
distribute2: count: 1000 time: 4222.2 average: 4.2 | |
distribute3: count: 1000 time: 5234.2 average: 5.2 | |
distribute4: count: 1000 time: 3871.5 average: 3.9 | |
distribute5: count: 1000 time: 3619.8 average: 3.6 | |
Testing: (500000,1000) | |
distribute0: count: 5 time: 166442.6 average: 33288.5 | |
distribute1: count: 100 time: 1041.0 average: 10.4 | |
distribute2: count: 1000 time: 5113.8 average: 5.1 | |
distribute3: count: 1000 time: 3956.2 average: 4.0 | |
distribute4: count: 1000 time: 3637.6 average: 3.6 | |
distribute5: count: 1000 time: 3436.4 average: 3.4 | |
Testing: (999999,1000) | |
distribute0: count: 5 time: 338774.5 average: 67754.9 | |
distribute1: count: 100 time: 1015.6 average: 10.2 | |
distribute2: count: 1000 time: 4316.8 average: 4.3 | |
distribute3: count: 1000 time: 3821.0 average: 3.8 | |
distribute4: count: 1000 time: 4943.3 average: 4.9 | |
distribute5: count: 1000 time: 3372.1 average: 3.4 | |
Testing: (100000000,10000) | |
distribute1: count: 100 time: 9579.2 average: 95.8 | |
distribute2: count: 1000 time: 13508.6 average: 13.5 | |
distribute3: count: 1000 time: 11178.0 average: 11.2 | |
distribute4: count: 1000 time: 10372.5 average: 10.4 | |
distribute5: count: 1000 time: 9659.9 average: 9.7 | |
Testing: (50000000,10000) | |
distribute1: count: 100 time: 9483.7 average: 94.8 | |
distribute2: count: 1000 time: 14042.3 average: 14.0 | |
distribute3: count: 1000 time: 9939.7 average: 9.9 | |
distribute4: count: 1000 time: 9841.1 average: 9.8 | |
distribute5: count: 1000 time: 10317.7 average: 10.3 | |
Testing: (99999999,10000) | |
distribute1: count: 100 time: 9360.9 average: 93.6 | |
distribute2: count: 1000 time: 16898.2 average: 16.9 | |
distribute3: count: 1000 time: 11917.4 average: 11.9 | |
distribute4: count: 1000 time: 10947.7 average: 10.9 | |
distribute5: count: 1000 time: 10638.0 average: 10.6 | |
Testing: (200,20) | |
distribute0: count: 5 time: 69.6 average: 13.9 | |
distribute1: count: 100 time: 132.1 average: 1.3 | |
distribute2: count: 1000 time: 2128.5 average: 2.1 | |
distribute3: count: 1000 time: 3130.7 average: 3.1 | |
distribute4: count: 1000 time: 2303.4 average: 2.3 | |
distribute5: count: 1000 time: 3274.9 average: 3.3 | |
Testing: (100,20) | |
distribute0: count: 5 time: 92.4 average: 18.5 | |
distribute1: count: 100 time: 361.9 average: 3.6 | |
distribute2: count: 1000 time: 3127.6 average: 3.1 | |
distribute3: count: 1000 time: 2983.5 average: 3.0 | |
distribute4: count: 1000 time: 1857.6 average: 1.9 | |
distribute5: count: 1000 time: 3079.0 average: 3.1 | |
Testing: (199,20) | |
distribute0: count: 5 time: 276.7 average: 55.3 | |
distribute1: count: 100 time: 190.5 average: 1.9 | |
distribute2: count: 1000 time: 1900.5 average: 1.9 | |
distribute3: count: 1000 time: 3395.3 average: 3.4 | |
distribute4: count: 1000 time: 2151.3 average: 2.2 | |
distribute5: count: 1000 time: 2522.1 average: 2.5 | |
Testing: (20000,200) | |
distribute0: count: 5 time: 5861.2 average: 1172.2 | |
distribute1: count: 100 time: 293.6 average: 2.9 | |
distribute2: count: 1000 time: 1726.0 average: 1.7 | |
distribute3: count: 1000 time: 1788.5 average: 1.8 | |
distribute4: count: 1000 time: 1609.5 average: 1.6 | |
distribute5: count: 1000 time: 1516.7 average: 1.5 | |
Testing: (10000,200) | |
distribute0: count: 5 time: 2957.1 average: 591.4 | |
distribute1: count: 100 time: 303.0 average: 3.0 | |
distribute2: count: 1000 time: 1829.1 average: 1.8 | |
distribute3: count: 1000 time: 1800.5 average: 1.8 | |
distribute4: count: 1000 time: 1818.8 average: 1.8 | |
distribute5: count: 1000 time: 1513.6 average: 1.5 | |
Testing: (19999,200) | |
distribute0: count: 5 time: 5991.0 average: 1198.2 | |
distribute1: count: 100 time: 297.2 average: 3.0 | |
distribute2: count: 1000 time: 1874.2 average: 1.9 | |
distribute3: count: 1000 time: 1975.9 average: 2.0 | |
distribute4: count: 1000 time: 1714.0 average: 1.7 | |
distribute5: count: 1000 time: 1626.9 average: 1.6 | |
Testing: (2000000,2000) | |
distribute0: count: 5 time: 693529.7 average: 138705.9 | |
distribute1: count: 100 time: 2017.4 average: 20.2 | |
distribute2: count: 1000 time: 4867.4 average: 4.9 | |
distribute3: count: 1000 time: 4245.4 average: 4.2 | |
distribute4: count: 1000 time: 5360.1 average: 5.4 | |
distribute5: count: 1000 time: 4134.7 average: 4.1 | |
Testing: (1000000,2000) | |
distribute0: count: 5 time: 335562.1 average: 67112.4 | |
distribute1: count: 100 time: 1915.7 average: 19.2 | |
distribute2: count: 1000 time: 4915.2 average: 4.9 | |
distribute3: count: 1000 time: 4173.6 average: 4.2 | |
distribute4: count: 1000 time: 3788.9 average: 3.8 | |
distribute5: count: 1000 time: 4544.8 average: 4.5 | |
Testing: (1999999,2000) | |
distribute0: count: 5 time: 679313.8 average: 135862.8 | |
distribute1: count: 100 time: 1918.3 average: 19.2 | |
distribute2: count: 1000 time: 6045.0 average: 6.0 | |
distribute3: count: 1000 time: 4298.9 average: 4.3 | |
distribute4: count: 1000 time: 3585.9 average: 3.6 | |
distribute5: count: 1000 time: 4592.1 average: 4.6 | |
Testing: (200000000,20000) | |
distribute1: count: 100 time: 18694.2 average: 186.9 | |
distribute2: count: 1000 time: 23124.4 average: 23.1 | |
distribute3: count: 1000 time: 16684.9 average: 16.7 | |
distribute4: count: 1000 time: 15708.5 average: 15.7 | |
distribute5: count: 1000 time: 15557.7 average: 15.6 | |
Testing: (100000000,20000) | |
distribute1: count: 100 time: 18648.3 average: 186.5 | |
distribute2: count: 1000 time: 23379.2 average: 23.4 | |
distribute3: count: 1000 time: 15675.9 average: 15.7 | |
distribute4: count: 1000 time: 15440.8 average: 15.4 | |
distribute5: count: 1000 time: 15041.0 average: 15.0 | |
Testing: (199999999,20000) | |
distribute1: count: 100 time: 18659.4 average: 186.6 | |
distribute2: count: 1000 time: 28758.0 average: 28.8 | |
distribute3: count: 1000 time: 18412.7 average: 18.4 | |
distribute4: count: 1000 time: 15438.1 average: 15.4 | |
distribute5: count: 1000 time: 15534.5 average: 15.5 | |
Testing: (300,30) | |
distribute0: count: 5 time: 91.5 average: 18.3 | |
distribute1: count: 100 time: 128.1 average: 1.3 | |
distribute2: count: 1000 time: 1413.2 average: 1.4 | |
distribute3: count: 1000 time: 1667.6 average: 1.7 | |
distribute4: count: 1000 time: 1494.4 average: 1.5 | |
distribute5: count: 1000 time: 1360.5 average: 1.4 | |
Testing: (150,30) | |
distribute0: count: 5 time: 50.9 average: 10.2 | |
distribute1: count: 100 time: 127.6 average: 1.3 | |
distribute2: count: 1000 time: 1416.8 average: 1.4 | |
distribute3: count: 1000 time: 1699.7 average: 1.7 | |
distribute4: count: 1000 time: 1480.6 average: 1.5 | |
distribute5: count: 1000 time: 1347.6 average: 1.3 | |
Testing: (299,30) | |
distribute0: count: 5 time: 87.9 average: 17.6 | |
distribute1: count: 100 time: 130.3 average: 1.3 | |
distribute2: count: 1000 time: 34165.8 average: 34.2 | |
distribute3: count: 1000 time: 33856.1 average: 33.9 | |
distribute4: count: 1000 time: 33159.6 average: 33.2 | |
distribute5: count: 1000 time: 32388.0 average: 32.4 | |
Testing: (30000,300) | |
distribute0: count: 5 time: 8563.5 average: 1712.7 | |
distribute1: count: 100 time: 371.3 average: 3.7 | |
distribute2: count: 1000 time: 1753.2 average: 1.8 | |
distribute3: count: 1000 time: 1729.1 average: 1.7 | |
distribute4: count: 1000 time: 1553.3 average: 1.6 | |
distribute5: count: 1000 time: 1603.3 average: 1.6 | |
Testing: (15000,300) | |
distribute0: count: 5 time: 4262.4 average: 852.5 | |
distribute1: count: 100 time: 376.2 average: 3.8 | |
distribute2: count: 1000 time: 1798.3 average: 1.8 | |
distribute3: count: 1000 time: 1738.9 average: 1.7 | |
distribute4: count: 1000 time: 1602.8 average: 1.6 | |
distribute5: count: 1000 time: 1490.4 average: 1.5 | |
Testing: (29999,300) | |
distribute0: count: 5 time: 9381.0 average: 1876.2 | |
distribute1: count: 100 time: 385.5 average: 3.9 | |
distribute2: count: 1000 time: 33915.5 average: 33.9 | |
distribute3: count: 1000 time: 35081.0 average: 35.1 | |
distribute4: count: 1000 time: 33448.7 average: 33.4 | |
distribute5: count: 1000 time: 34026.1 average: 34.0 | |
Testing: (3000000,3000) | |
distribute0: count: 5 time: 1033042.6 average: 206608.5 | |
distribute1: count: 100 time: 3855.4 average: 38.6 | |
distribute2: count: 1000 time: 5980.8 average: 6.0 | |
distribute3: count: 1000 time: 4663.1 average: 4.7 | |
distribute4: count: 1000 time: 5030.3 average: 5.0 | |
distribute5: count: 1000 time: 4049.1 average: 4.0 | |
Testing: (1500000,3000) | |
distribute0: count: 5 time: 509921.6 average: 101984.3 | |
distribute1: count: 100 time: 2846.5 average: 28.5 | |
distribute2: count: 1000 time: 5521.2 average: 5.5 | |
distribute3: count: 1000 time: 5547.5 average: 5.5 | |
distribute4: count: 1000 time: 4089.2 average: 4.1 | |
distribute5: count: 1000 time: 4027.2 average: 4.0 | |
Testing: (2999999,3000) | |
distribute0: count: 5 time: 1037396.9 average: 207479.4 | |
distribute1: count: 100 time: 2852.7 average: 28.5 | |
distribute2: count: 1000 time: 38692.8 average: 38.7 | |
distribute3: count: 1000 time: 38016.7 average: 38.0 | |
distribute4: count: 1000 time: 36720.4 average: 36.7 | |
distribute5: count: 1000 time: 36663.8 average: 36.7 | |
Testing: (300000000,30000) | |
distribute1: count: 100 time: 28006.1 average: 280.1 | |
distribute2: count: 1000 time: 39458.9 average: 39.5 | |
distribute3: count: 1000 time: 27239.9 average: 27.2 | |
distribute4: count: 1000 time: 27180.6 average: 27.2 | |
distribute5: count: 1000 time: 25998.1 average: 26.0 | |
Testing: (150000000,30000) | |
distribute1: count: 100 time: 27768.7 average: 277.7 | |
distribute2: count: 1000 time: 39022.5 average: 39.0 | |
distribute3: count: 1000 time: 27227.0 average: 27.2 | |
distribute4: count: 1000 time: 26133.7 average: 26.1 | |
distribute5: count: 1000 time: 26669.6 average: 26.7 | |
Testing: (299999999,30000) | |
distribute1: count: 100 time: 27965.9 average: 279.7 | |
distribute2: count: 1000 time: 78896.9 average: 78.9 | |
distribute3: count: 1000 time: 63905.0 average: 63.9 | |
distribute4: count: 1000 time: 57748.9 average: 57.7 | |
distribute5: count: 1000 time: 58637.8 average: 58.6 | |
Testing: (400,40) | |
distribute0: count: 5 time: 119.6 average: 23.9 | |
distribute1: count: 100 time: 138.8 average: 1.4 | |
distribute2: count: 1000 time: 1435.5 average: 1.4 | |
distribute3: count: 1000 time: 1710.8 average: 1.7 | |
distribute4: count: 1000 time: 1472.1 average: 1.5 | |
distribute5: count: 1000 time: 1412.3 average: 1.4 | |
Testing: (200,40) | |
distribute0: count: 5 time: 63.8 average: 12.8 | |
distribute1: count: 100 time: 147.3 average: 1.5 | |
distribute2: count: 1000 time: 1429.3 average: 1.4 | |
distribute3: count: 1000 time: 1561.8 average: 1.6 | |
distribute4: count: 1000 time: 2579.6 average: 2.6 | |
distribute5: count: 1000 time: 1647.0 average: 1.6 | |
Testing: (399,40) | |
distribute0: count: 5 time: 115.6 average: 23.1 | |
distribute1: count: 100 time: 137.0 average: 1.4 | |
distribute2: count: 1000 time: 1504.2 average: 1.5 | |
distribute3: count: 1000 time: 1770.6 average: 1.8 | |
distribute4: count: 1000 time: 1504.2 average: 1.5 | |
distribute5: count: 1000 time: 1486.8 average: 1.5 | |
Testing: (40000,400) | |
distribute0: count: 5 time: 11433.2 average: 2286.6 | |
distribute1: count: 100 time: 469.9 average: 4.7 | |
distribute2: count: 1000 time: 1963.0 average: 2.0 | |
distribute3: count: 1000 time: 1805.4 average: 1.8 | |
distribute4: count: 1000 time: 1635.4 average: 1.6 | |
distribute5: count: 1000 time: 2510.9 average: 2.5 | |
Testing: (20000,400) | |
distribute0: count: 5 time: 5746.5 average: 1149.3 | |
distribute1: count: 100 time: 463.6 average: 4.6 | |
distribute2: count: 1000 time: 1888.9 average: 1.9 | |
distribute3: count: 1000 time: 1798.7 average: 1.8 | |
distribute4: count: 1000 time: 1606.0 average: 1.6 | |
distribute5: count: 1000 time: 1574.7 average: 1.6 | |
Testing: (39999,400) | |
distribute0: count: 5 time: 12512.2 average: 2502.4 | |
distribute1: count: 100 time: 466.8 average: 4.7 | |
distribute2: count: 1000 time: 1997.8 average: 2.0 | |
distribute3: count: 1000 time: 1934.8 average: 1.9 | |
distribute4: count: 1000 time: 1734.9 average: 1.7 | |
distribute5: count: 1000 time: 1620.2 average: 1.6 | |
Testing: (4000000,4000) | |
distribute0: count: 5 time: 1381647.9 average: 276329.6 | |
distribute1: count: 100 time: 3782.7 average: 37.8 | |
distribute2: count: 1000 time: 7946.0 average: 7.9 | |
distribute3: count: 1000 time: 4944.2 average: 4.9 | |
distribute4: count: 1000 time: 5900.9 average: 5.9 | |
distribute5: count: 1000 time: 4265.9 average: 4.3 | |
Testing: (2000000,4000) | |
distribute0: count: 5 time: 671461.1 average: 134292.2 | |
distribute1: count: 100 time: 3737.1 average: 37.4 | |
distribute2: count: 1000 time: 7359.2 average: 7.4 | |
distribute3: count: 1000 time: 5240.9 average: 5.2 | |
distribute4: count: 1000 time: 5825.0 average: 5.8 | |
distribute5: count: 1000 time: 4316.4 average: 4.3 | |
Testing: (3999999,4000) | |
distribute0: count: 5 time: 1371005.9 average: 274201.2 | |
distribute1: count: 100 time: 3924.6 average: 39.2 | |
distribute2: count: 1000 time: 8052.6 average: 8.1 | |
distribute3: count: 1000 time: 5178.5 average: 5.2 | |
distribute4: count: 1000 time: 5567.6 average: 5.6 | |
distribute5: count: 1000 time: 4506.0 average: 4.5 | |
Testing: (400000000,40000) | |
distribute1: count: 100 time: 38496.4 average: 385.0 | |
distribute2: count: 1000 time: 47409.8 average: 47.4 | |
distribute3: count: 1000 time: 31460.3 average: 31.5 | |
distribute4: count: 1000 time: 31019.0 average: 31.0 | |
distribute5: count: 1000 time: 29809.3 average: 29.8 | |
Testing: (200000000,40000) | |
distribute1: count: 100 time: 38027.9 average: 380.3 | |
distribute2: count: 1000 time: 48814.5 average: 48.8 | |
distribute3: count: 1000 time: 32174.7 average: 32.2 | |
distribute4: count: 1000 time: 31306.8 average: 31.3 | |
distribute5: count: 1000 time: 30554.5 average: 30.6 | |
Testing: (399999999,40000) | |
distribute1: count: 100 time: 37144.8 average: 371.4 | |
distribute2: count: 1000 time: 58072.8 average: 58.1 | |
distribute3: count: 1000 time: 39822.6 average: 39.8 | |
distribute4: count: 1000 time: 33183.2 average: 33.2 | |
distribute5: count: 1000 time: 32224.3 average: 32.2 | |
Testing: (500,50) | |
distribute0: count: 5 time: 141.9 average: 28.4 | |
distribute1: count: 100 time: 150.8 average: 1.5 | |
distribute2: count: 1000 time: 1469.0 average: 1.5 | |
distribute3: count: 1000 time: 1590.8 average: 1.6 | |
distribute4: count: 1000 time: 1461.4 average: 1.5 | |
distribute5: count: 1000 time: 2451.6 average: 2.5 | |
Testing: (250,50) | |
distribute0: count: 5 time: 76.3 average: 15.3 | |
distribute1: count: 100 time: 145.0 average: 1.5 | |
distribute2: count: 1000 time: 1441.3 average: 1.4 | |
distribute3: count: 1000 time: 1616.7 average: 1.6 | |
distribute4: count: 1000 time: 1648.4 average: 1.6 | |
distribute5: count: 1000 time: 1575.2 average: 1.6 | |
Testing: (499,50) | |
distribute0: count: 5 time: 153.5 average: 30.7 | |
distribute1: count: 100 time: 149.9 average: 1.5 | |
distribute2: count: 1000 time: 1519.0 average: 1.5 | |
distribute3: count: 1000 time: 1747.0 average: 1.7 | |
distribute4: count: 1000 time: 1690.8 average: 1.7 | |
distribute5: count: 1000 time: 1444.9 average: 1.4 | |
Testing: (50000,500) | |
distribute0: count: 5 time: 16042.7 average: 3208.5 | |
distribute1: count: 100 time: 569.4 average: 5.7 | |
distribute2: count: 1000 time: 2050.9 average: 2.1 | |
distribute3: count: 1000 time: 1880.8 average: 1.9 | |
distribute4: count: 1000 time: 1704.1 average: 1.7 | |
distribute5: count: 1000 time: 1590.4 average: 1.6 | |
Testing: (25000,500) | |
distribute0: count: 5 time: 7222.2 average: 1444.4 | |
distribute1: count: 100 time: 548.4 average: 5.5 | |
distribute2: count: 1000 time: 2024.5 average: 2.0 | |
distribute3: count: 1000 time: 1875.9 average: 1.9 | |
distribute4: count: 1000 time: 1734.5 average: 1.7 | |
distribute5: count: 1000 time: 1564.9 average: 1.6 | |
Testing: (49999,500) | |
distribute0: count: 5 time: 16074.9 average: 3215.0 | |
distribute1: count: 100 time: 559.6 average: 5.6 | |
distribute2: count: 1000 time: 2083.4 average: 2.1 | |
distribute3: count: 1000 time: 2044.2 average: 2.0 | |
distribute4: count: 1000 time: 1793.8 average: 1.8 | |
distribute5: count: 1000 time: 1996.4 average: 2.0 | |
Testing: (5000000,5000) | |
distribute0: count: 5 time: 1705778.1 average: 341155.6 | |
distribute1: count: 100 time: 4660.8 average: 46.6 | |
distribute2: count: 1000 time: 8287.8 average: 8.3 | |
distribute3: count: 1000 time: 6712.6 average: 6.7 | |
distribute4: count: 1000 time: 4675.1 average: 4.7 | |
distribute5: count: 1000 time: 6025.8 average: 6.0 | |
Testing: (2500000,5000) | |
distribute0: count: 5 time: 839544.4 average: 167908.9 | |
distribute1: count: 100 time: 4694.8 average: 46.9 | |
distribute2: count: 1000 time: 7331.1 average: 7.3 | |
distribute3: count: 1000 time: 6183.8 average: 6.2 | |
distribute4: count: 1000 time: 6062.9 average: 6.1 | |
distribute5: count: 1000 time: 4875.9 average: 4.9 | |
Testing: (4999999,5000) | |
distribute0: count: 5 time: 1699207.0 average: 339841.4 | |
distribute1: count: 100 time: 4684.9 average: 46.8 | |
distribute2: count: 1000 time: 10233.8 average: 10.2 | |
distribute3: count: 1000 time: 6120.4 average: 6.1 | |
distribute4: count: 1000 time: 5882.2 average: 5.9 | |
distribute5: count: 1000 time: 5051.7 average: 5.1 | |
Testing: (500000000,50000) | |
distribute1: count: 100 time: 46787.8 average: 467.9 | |
distribute2: count: 1000 time: 60716.3 average: 60.7 | |
distribute3: count: 1000 time: 40760.1 average: 40.8 | |
distribute4: count: 1000 time: 39118.0 average: 39.1 | |
distribute5: count: 1000 time: 38210.0 average: 38.2 | |
Testing: (250000000,50000) | |
distribute1: count: 100 time: 46605.7 average: 466.1 | |
distribute2: count: 1000 time: 60927.4 average: 60.9 | |
distribute3: count: 1000 time: 40384.0 average: 40.4 | |
distribute4: count: 1000 time: 40055.5 average: 40.1 | |
distribute5: count: 1000 time: 38732.5 average: 38.7 | |
Testing: (499999999,50000) | |
distribute1: count: 100 time: 46535.2 average: 465.4 | |
distribute2: count: 1000 time: 73545.3 average: 73.5 | |
distribute3: count: 1000 time: 48205.4 average: 48.2 | |
distribute4: count: 1000 time: 39677.1 average: 39.7 | |
distribute5: count: 1000 time: 38956.5 average: 39.0 | |
Testing: (600,60) | |
distribute0: count: 5 time: 232.0 average: 46.4 | |
distribute1: count: 100 time: 152.2 average: 1.5 | |
distribute2: count: 1000 time: 1461.8 average: 1.5 | |
distribute3: count: 1000 time: 1583.7 average: 1.6 | |
distribute4: count: 1000 time: 1560.0 average: 1.6 | |
distribute5: count: 1000 time: 1359.7 average: 1.4 | |
Testing: (300,60) | |
distribute0: count: 5 time: 87.9 average: 17.6 | |
distribute1: count: 100 time: 153.9 average: 1.5 | |
distribute2: count: 1000 time: 1448.9 average: 1.4 | |
distribute3: count: 1000 time: 1586.3 average: 1.6 | |
distribute4: count: 1000 time: 1485.5 average: 1.5 | |
distribute5: count: 1000 time: 1377.9 average: 1.4 | |
Testing: (599,60) | |
distribute0: count: 5 time: 173.1 average: 34.6 | |
distribute1: count: 100 time: 153.1 average: 1.5 | |
distribute2: count: 1000 time: 32693.3 average: 32.7 | |
distribute3: count: 1000 time: 33759.3 average: 33.8 | |
distribute4: count: 1000 time: 33171.6 average: 33.2 | |
distribute5: count: 1000 time: 32887.8 average: 32.9 | |
Testing: (60000,600) | |
distribute0: count: 5 time: 18444.3 average: 3688.9 | |
distribute1: count: 100 time: 641.7 average: 6.4 | |
distribute2: count: 1000 time: 2114.7 average: 2.1 | |
distribute3: count: 1000 time: 1884.9 average: 1.9 | |
distribute4: count: 1000 time: 1776.4 average: 1.8 | |
distribute5: count: 1000 time: 1604.6 average: 1.6 | |
Testing: (30000,600) | |
distribute0: count: 5 time: 8735.8 average: 1747.2 | |
distribute1: count: 100 time: 643.9 average: 6.4 | |
distribute2: count: 1000 time: 2128.9 average: 2.1 | |
distribute3: count: 1000 time: 1895.6 average: 1.9 | |
distribute4: count: 1000 time: 1799.6 average: 1.8 | |
distribute5: count: 1000 time: 1597.5 average: 1.6 | |
Testing: (59999,600) | |
distribute0: count: 5 time: 18882.5 average: 3776.5 | |
distribute1: count: 100 time: 649.3 average: 6.5 | |
distribute2: count: 1000 time: 34220.2 average: 34.2 | |
distribute3: count: 1000 time: 35833.8 average: 35.8 | |
distribute4: count: 1000 time: 35360.8 average: 35.4 | |
distribute5: count: 1000 time: 35500.9 average: 35.5 | |
Testing: (6000000,6000) | |
distribute0: count: 5 time: 2036247.0 average: 407249.4 | |
distribute1: count: 100 time: 5727.8 average: 57.3 | |
distribute2: count: 1000 time: 9003.5 average: 9.0 | |
distribute3: count: 1000 time: 7392.6 average: 7.4 | |
distribute4: count: 1000 time: 5540.4 average: 5.5 | |
distribute5: count: 1000 time: 5692.5 average: 5.7 | |
Testing: (3000000,6000) | |
distribute0: count: 5 time: 1006516.7 average: 201303.3 | |
distribute1: count: 100 time: 5547.5 average: 55.5 | |
distribute2: count: 1000 time: 8079.8 average: 8.1 | |
distribute3: count: 1000 time: 7483.2 average: 7.5 | |
distribute4: count: 1000 time: 6724.6 average: 6.7 | |
distribute5: count: 1000 time: 5330.6 average: 5.3 | |
Testing: (5999999,6000) | |
distribute0: count: 5 time: 2071505.6 average: 414301.1 | |
distribute1: count: 100 time: 5678.7 average: 56.8 | |
distribute2: count: 1000 time: 40867.2 average: 40.9 | |
distribute3: count: 1000 time: 39111.3 average: 39.1 | |
distribute4: count: 1000 time: 36053.3 average: 36.1 | |
distribute5: count: 1000 time: 40812.8 average: 40.8 | |
Testing: (600000000,60000) | |
distribute1: count: 100 time: 56430.3 average: 564.3 | |
distribute2: count: 1000 time: 79335.6 average: 79.3 | |
distribute3: count: 1000 time: 50833.7 average: 50.8 | |
distribute4: count: 1000 time: 52279.5 average: 52.3 | |
distribute5: count: 1000 time: 53078.7 average: 53.1 | |
Testing: (300000000,60000) | |
distribute1: count: 100 time: 64562.3 average: 645.6 | |
distribute2: count: 1000 time: 75113.4 average: 75.1 | |
distribute3: count: 1000 time: 59007.7 average: 59.0 | |
distribute4: count: 1000 time: 51592.7 average: 51.6 | |
distribute5: count: 1000 time: 51607.9 average: 51.6 | |
Testing: (599999999,60000) | |
distribute1: count: 100 time: 55752.5 average: 557.5 | |
distribute2: count: 1000 time: 125815.0 average: 125.8 | |
distribute3: count: 1000 time: 98756.2 average: 98.8 | |
distribute4: count: 1000 time: 85312.3 average: 85.3 | |
distribute5: count: 1000 time: 86881.7 average: 86.9 | |
Testing: (700,70) | |
distribute0: count: 5 time: 191.0 average: 38.2 | |
distribute1: count: 100 time: 163.3 average: 1.6 | |
distribute2: count: 1000 time: 1461.8 average: 1.5 | |
distribute3: count: 1000 time: 1646.1 average: 1.6 | |
distribute4: count: 1000 time: 1455.1 average: 1.5 | |
distribute5: count: 1000 time: 1361.9 average: 1.4 | |
Testing: (350,70) | |
distribute0: count: 5 time: 100.0 average: 20.0 | |
distribute1: count: 100 time: 176.7 average: 1.8 | |
distribute2: count: 1000 time: 1490.8 average: 1.5 | |
distribute3: count: 1000 time: 1704.6 average: 1.7 | |
distribute4: count: 1000 time: 1484.6 average: 1.5 | |
distribute5: count: 1000 time: 1377.1 average: 1.4 | |
Testing: (699,70) | |
distribute0: count: 5 time: 215.1 average: 43.0 | |
distribute1: count: 100 time: 169.1 average: 1.7 | |
distribute2: count: 1000 time: 33400.5 average: 33.4 | |
distribute3: count: 1000 time: 34051.6 average: 34.1 | |
distribute4: count: 1000 time: 33738.3 average: 33.7 | |
distribute5: count: 1000 time: 34611.6 average: 34.6 | |
Testing: (70000,700) | |
distribute0: count: 5 time: 21562.1 average: 4312.4 | |
distribute1: count: 100 time: 743.4 average: 7.4 | |
distribute2: count: 1000 time: 2233.8 average: 2.2 | |
distribute3: count: 1000 time: 1947.3 average: 1.9 | |
distribute4: count: 1000 time: 1741.2 average: 1.7 | |
distribute5: count: 1000 time: 1688.5 average: 1.7 | |
Testing: (35000,700) | |
distribute0: count: 5 time: 11302.5 average: 2260.5 | |
distribute1: count: 100 time: 738.5 average: 7.4 | |
distribute2: count: 1000 time: 2220.9 average: 2.2 | |
distribute3: count: 1000 time: 1933.1 average: 1.9 | |
distribute4: count: 1000 time: 1760.8 average: 1.8 | |
distribute5: count: 1000 time: 1696.6 average: 1.7 | |
Testing: (69999,700) | |
distribute0: count: 5 time: 21311.3 average: 4262.3 | |
distribute1: count: 100 time: 731.8 average: 7.3 | |
distribute2: count: 1000 time: 33859.7 average: 33.9 | |
distribute3: count: 1000 time: 35019.9 average: 35.0 | |
distribute4: count: 1000 time: 33192.1 average: 33.2 | |
distribute5: count: 1000 time: 33545.5 average: 33.5 | |
Testing: (7000000,7000) | |
distribute0: count: 5 time: 2403074.9 average: 480615.0 | |
distribute1: count: 100 time: 6821.9 average: 68.2 | |
distribute2: count: 1000 time: 12740.7 average: 12.7 | |
distribute3: count: 1000 time: 7796.5 average: 7.8 | |
distribute4: count: 1000 time: 7299.8 average: 7.3 | |
distribute5: count: 1000 time: 7926.8 average: 7.9 | |
Testing: (3500000,7000) | |
distribute0: count: 5 time: 1172567.9 average: 234513.6 | |
distribute1: count: 100 time: 7522.5 average: 75.2 | |
distribute2: count: 1000 time: 9605.9 average: 9.6 | |
distribute3: count: 1000 time: 8142.7 average: 8.1 | |
distribute4: count: 1000 time: 7678.2 average: 7.7 | |
distribute5: count: 1000 time: 7670.6 average: 7.7 | |
Testing: (6999999,7000) | |
distribute0: count: 5 time: 2407810.7 average: 481562.1 | |
distribute1: count: 100 time: 6747.8 average: 67.5 | |
distribute2: count: 1000 time: 42174.2 average: 42.2 | |
distribute3: count: 1000 time: 40598.2 average: 40.6 | |
distribute4: count: 1000 time: 38060.5 average: 38.1 | |
distribute5: count: 1000 time: 37677.6 average: 37.7 | |
Testing: (700000000,70000) | |
distribute1: count: 100 time: 65131.7 average: 651.3 | |
distribute2: count: 1000 time: 74692.1 average: 74.7 | |
distribute3: count: 1000 time: 48856.0 average: 48.9 | |
distribute4: count: 1000 time: 48053.7 average: 48.1 | |
distribute5: count: 1000 time: 47411.1 average: 47.4 | |
Testing: (350000000,70000) | |
distribute1: count: 100 time: 66267.8 average: 662.7 | |
distribute2: count: 1000 time: 77118.3 average: 77.1 | |
distribute3: count: 1000 time: 48843.5 average: 48.8 | |
distribute4: count: 1000 time: 47278.6 average: 47.3 | |
distribute5: count: 1000 time: 47587.9 average: 47.6 | |
Testing: (699999999,70000) | |
distribute1: count: 100 time: 65926.9 average: 659.3 | |
distribute2: count: 1000 time: 129270.1 average: 129.3 | |
distribute3: count: 1000 time: 89166.4 average: 89.2 | |
distribute4: count: 1000 time: 83016.9 average: 83.0 | |
distribute5: count: 1000 time: 78134.8 average: 78.1 | |
Testing: (800,80) | |
distribute0: count: 5 time: 219.5 average: 43.9 | |
distribute1: count: 100 time: 173.6 average: 1.7 | |
distribute2: count: 1000 time: 1496.2 average: 1.5 | |
distribute3: count: 1000 time: 1647.5 average: 1.6 | |
distribute4: count: 1000 time: 1504.2 average: 1.5 | |
distribute5: count: 1000 time: 1367.2 average: 1.4 | |
Testing: (400,80) | |
distribute0: count: 5 time: 113.8 average: 22.8 | |
distribute1: count: 100 time: 171.4 average: 1.7 | |
distribute2: count: 1000 time: 1620.7 average: 1.6 | |
distribute3: count: 1000 time: 1821.1 average: 1.8 | |
distribute4: count: 1000 time: 1567.1 average: 1.6 | |
distribute5: count: 1000 time: 1365.9 average: 1.4 | |
Testing: (799,80) | |
distribute0: count: 5 time: 218.2 average: 43.6 | |
distribute1: count: 100 time: 171.4 average: 1.7 | |
distribute2: count: 1000 time: 1722.9 average: 1.7 | |
distribute3: count: 1000 time: 1739.8 average: 1.7 | |
distribute4: count: 1000 time: 1527.0 average: 1.5 | |
distribute5: count: 1000 time: 1418.1 average: 1.4 | |
Testing: (80000,800) | |
distribute0: count: 5 time: 24311.8 average: 4862.4 | |
distribute1: count: 100 time: 819.7 average: 8.2 | |
distribute2: count: 1000 time: 2377.9 average: 2.4 | |
distribute3: count: 1000 time: 1935.3 average: 1.9 | |
distribute4: count: 1000 time: 1794.7 average: 1.8 | |
distribute5: count: 1000 time: 1744.3 average: 1.7 | |
Testing: (40000,800) | |
distribute0: count: 5 time: 11995.9 average: 2399.2 | |
distribute1: count: 100 time: 818.8 average: 8.2 | |
distribute2: count: 1000 time: 3264.1 average: 3.3 | |
distribute3: count: 1000 time: 1945.1 average: 1.9 | |
distribute4: count: 1000 time: 1797.4 average: 1.8 | |
distribute5: count: 1000 time: 1705.0 average: 1.7 | |
Testing: (79999,800) | |
distribute0: count: 5 time: 24514.4 average: 4902.9 | |
distribute1: count: 100 time: 821.9 average: 8.2 | |
distribute2: count: 1000 time: 2763.0 average: 2.8 | |
distribute3: count: 1000 time: 2261.0 average: 2.3 | |
distribute4: count: 1000 time: 1953.6 average: 2.0 | |
distribute5: count: 1000 time: 2045.5 average: 2.0 | |
Testing: (8000000,8000) | |
distribute0: count: 5 time: 2720966.8 average: 544193.4 | |
distribute1: count: 100 time: 7550.6 average: 75.5 | |
distribute2: count: 1000 time: 11456.4 average: 11.5 | |
distribute3: count: 1000 time: 7203.0 average: 7.2 | |
distribute4: count: 1000 time: 7969.6 average: 8.0 | |
distribute5: count: 1000 time: 8145.9 average: 8.1 | |
Testing: (4000000,8000) | |
distribute0: count: 5 time: 1351489.7 average: 270297.9 | |
distribute1: count: 100 time: 7485.9 average: 74.9 | |
distribute2: count: 1000 time: 11370.8 average: 11.4 | |
distribute3: count: 1000 time: 8415.4 average: 8.4 | |
distribute4: count: 1000 time: 7761.2 average: 7.8 | |
distribute5: count: 1000 time: 7045.0 average: 7.0 | |
Testing: (7999999,8000) | |
distribute0: count: 5 time: 2843510.9 average: 568702.2 | |
distribute1: count: 100 time: 7575.1 average: 75.8 | |
distribute2: count: 1000 time: 13539.9 average: 13.5 | |
distribute3: count: 1000 time: 9434.6 average: 9.4 | |
distribute4: count: 1000 time: 6830.4 average: 6.8 | |
distribute5: count: 1000 time: 8026.7 average: 8.0 | |
Testing: (800000000,80000) | |
distribute1: count: 100 time: 75220.4 average: 752.2 | |
distribute2: count: 1000 time: 101524.2 average: 101.5 | |
distribute3: count: 1000 time: 70829.6 average: 70.8 | |
distribute4: count: 1000 time: 67772.9 average: 67.8 | |
distribute5: count: 1000 time: 71134.8 average: 71.1 | |
Testing: (400000000,80000) | |
distribute1: count: 100 time: 75859.4 average: 758.6 | |
distribute2: count: 1000 time: 103860.6 average: 103.9 | |
distribute3: count: 1000 time: 68903.7 average: 68.9 | |
distribute4: count: 1000 time: 70866.2 average: 70.9 | |
distribute5: count: 1000 time: 68839.0 average: 68.8 | |
Testing: (799999999,80000) | |
distribute1: count: 100 time: 74516.3 average: 745.2 | |
distribute2: count: 1000 time: 124925.2 average: 124.9 | |
distribute3: count: 1000 time: 83635.4 average: 83.6 | |
distribute4: count: 1000 time: 70353.5 average: 70.4 | |
distribute5: count: 1000 time: 68071.0 average: 68.1 | |
Testing: (900,90) | |
distribute0: count: 5 time: 259.7 average: 51.9 | |
distribute1: count: 100 time: 191.0 average: 1.9 | |
distribute2: count: 1000 time: 1523.0 average: 1.5 | |
distribute3: count: 1000 time: 2271.7 average: 2.3 | |
distribute4: count: 1000 time: 1520.7 average: 1.5 | |
distribute5: count: 1000 time: 1419.9 average: 1.4 | |
Testing: (450,90) | |
distribute0: count: 5 time: 146.8 average: 29.4 | |
distribute1: count: 100 time: 186.5 average: 1.9 | |
distribute2: count: 1000 time: 1856.8 average: 1.9 | |
distribute3: count: 1000 time: 1714.0 average: 1.7 | |
distribute4: count: 1000 time: 1602.0 average: 1.6 | |
distribute5: count: 1000 time: 1422.1 average: 1.4 | |
Testing: (899,90) | |
distribute0: count: 5 time: 251.7 average: 50.3 | |
distribute1: count: 100 time: 187.4 average: 1.9 | |
distribute2: count: 1000 time: 33828.5 average: 33.8 | |
distribute3: count: 1000 time: 34086.8 average: 34.1 | |
distribute4: count: 1000 time: 38234.9 average: 38.2 | |
distribute5: count: 1000 time: 34509.4 average: 34.5 | |
Testing: (90000,900) | |
distribute0: count: 5 time: 29083.3 average: 5816.7 | |
distribute1: count: 100 time: 918.3 average: 9.2 | |
distribute2: count: 1000 time: 2462.7 average: 2.5 | |
distribute3: count: 1000 time: 2013.4 average: 2.0 | |
distribute4: count: 1000 time: 1937.1 average: 1.9 | |
distribute5: count: 1000 time: 1768.8 average: 1.8 | |
Testing: (45000,900) | |
distribute0: count: 5 time: 14887.0 average: 2977.4 | |
distribute1: count: 100 time: 921.5 average: 9.2 | |
distribute2: count: 1000 time: 2444.9 average: 2.4 | |
distribute3: count: 1000 time: 2097.3 average: 2.1 | |
distribute4: count: 1000 time: 2316.8 average: 2.3 | |
distribute5: count: 1000 time: 1998.7 average: 2.0 | |
Testing: (89999,900) | |
distribute0: count: 5 time: 29057.8 average: 5811.6 | |
distribute1: count: 100 time: 940.2 average: 9.4 | |
distribute2: count: 1000 time: 42545.0 average: 42.5 | |
distribute3: count: 1000 time: 35070.7 average: 35.1 | |
distribute4: count: 1000 time: 34584.4 average: 34.6 | |
distribute5: count: 1000 time: 36006.5 average: 36.0 | |
Testing: (9000000,9000) | |
distribute0: count: 5 time: 3073260.2 average: 614652.0 | |
distribute1: count: 100 time: 8279.3 average: 82.8 | |
distribute2: count: 1000 time: 12149.4 average: 12.1 | |
distribute3: count: 1000 time: 9484.1 average: 9.5 | |
distribute4: count: 1000 time: 8654.6 average: 8.7 | |
distribute5: count: 1000 time: 8579.2 average: 8.6 | |
Testing: (4500000,9000) | |
distribute0: count: 5 time: 1529484.2 average: 305896.8 | |
distribute1: count: 100 time: 8261.9 average: 82.6 | |
distribute2: count: 1000 time: 12591.6 average: 12.6 | |
distribute3: count: 1000 time: 8646.5 average: 8.6 | |
distribute4: count: 1000 time: 8544.4 average: 8.5 | |
distribute5: count: 1000 time: 8291.8 average: 8.3 | |
Testing: (8999999,9000) | |
distribute0: count: 5 time: 3079991.5 average: 615998.3 | |
distribute1: count: 100 time: 8341.3 average: 83.4 | |
distribute2: count: 1000 time: 45457.6 average: 45.5 | |
distribute3: count: 1000 time: 43133.6 average: 43.1 | |
distribute4: count: 1000 time: 39917.2 average: 39.9 | |
distribute5: count: 1000 time: 39287.6 average: 39.3 | |
Testing: (900000000,90000) | |
distribute1: count: 100 time: 84561.3 average: 845.6 | |
distribute2: count: 1000 time: 114747.2 average: 114.7 | |
distribute3: count: 1000 time: 75203.0 average: 75.2 | |
distribute4: count: 1000 time: 73855.4 average: 73.9 | |
distribute5: count: 1000 time: 75482.8 average: 75.5 | |
Testing: (450000000,90000) | |
distribute1: count: 100 time: 83921.4 average: 839.2 | |
distribute2: count: 1000 time: 111972.6 average: 112.0 | |
distribute3: count: 1000 time: 75935.3 average: 75.9 | |
distribute4: count: 1000 time: 75827.3 average: 75.8 | |
distribute5: count: 1000 time: 74367.7 average: 74.4 | |
Testing: (899999999,90000) | |
distribute1: count: 100 time: 84030.3 average: 840.3 | |
distribute2: count: 1000 time: 171626.8 average: 171.6 | |
distribute3: count: 1000 time: 124847.6 average: 124.8 | |
distribute4: count: 1000 time: 107471.9 average: 107.5 | |
distribute5: count: 1000 time: 108423.3 average: 108.4 | |
===> null | |
groovy:000> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
void distribute4( const int total, int* const buckets, const int nBuckets ) { | |
const int minimum = total / nBuckets, | |
nExtra = total % nBuckets; | |
std::fill_n( buckets, nExtra, minimum + 1 ); | |
std::fill_n( buckets + nExtra, nBuckets - nExtra, minimum ); | |
} | |
int main( int argc, char const *argv[] ) { | |
int buckets[10]; | |
distribute4( 98, buckets, 10 ); | |
for ( int x : buckets ) std::cout << x << " "; | |
std::cout << std::endl; | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Data.Foldable (foldl') | |
import Data.List (genericReplicate) | |
distribute2 :: Integral a => a -> a -> [a] | |
distribute2 sum nBuckets = | |
let distHelp nBuckets (remains, tables) i = | |
let tablesLeft = nBuckets - i | |
currBucket = (remains + tablesLeft - 1) `div` tablesLeft | |
in (remains - currBucket, tables ++ [currBucket]) | |
in snd $ foldl' (distHelp nBuckets) (sum, []) [0..nBuckets - 1] | |
distribute4 :: Integral a => a -> a -> [a] | |
distribute4 sum nBuckets = | |
let bucketsWithExtra = sum `rem` nBuckets | |
minimumForAll = sum `div` nBuckets | |
start = genericReplicate bucketsWithExtra (minimumForAll + 1) | |
end = genericReplicate (nBuckets - bucketsWithExtra) minimumForAll | |
in start ++ end | |
prop_eq :: Integral a => a -> a -> Bool | |
prop_eq s n = let (sum, nBuckets) = (max 0 s, max 1 n) | |
in distribute2 sum nBuckets == distribute4 sum nBuckets |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment