-
-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🐛 uniformIntDistribution not uniform for gaps outside of 32 bits integers #117
Conversation
Pull Request Test Coverage Report for Build 1120
💛 - Coveralls |
In order to check the impact of this change in terms of performances, we compared previous implementation with the current one. Our performance snippet is: const {uniformIntDistribution,xoroshiro128plus} = require('pure-rand');
let g = xoroshiro128plus(42);
for (let idx = 0; idx !== NUM_TESTS; ++idx) {
g = lib.uniformIntDistribution(settings.min, settings.max, g)[1];
} Against: 2**16 - { min: 0, max: 0xffff })
2**32 - { min: 0, max: 0xffffffff }
2**32+1 - { min: 0, max: 0xffffffff + 1 }
max - { min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER } Leading to: 2**16@Reference x 28,151 ops/sec ±0.88% (1088 runs sampled)
2**32@Reference x 18,623 ops/sec ±0.29% (1089 runs sampled)
2**32+1@Reference x 16,795 ops/sec ±0.35% (1080 runs sampled)
max@Reference x 20,602 ops/sec ±0.35% (1092 runs sampled)
2**16@Test x 13,977 ops/sec ±0.25% (1067 runs sampled)
2**32@Test x 12,147 ops/sec ±0.22% (1058 runs sampled)
2**32+1@Test x 3,501 ops/sec ±0.11% (1017 runs sampled)
max@Test x 4,208 ops/sec ±0.15% (1020 runs sampled)
2**16@Reference x 15,198 ops/sec ±0.28% (1073 runs sampled)
2**32@Reference x 12,621 ops/sec ±0.21% (1061 runs sampled)
2**32+1@Reference x 10,083 ops/sec ±0.22% (1049 runs sampled)
max@Reference x 11,418 ops/sec ±0.25% (1055 runs sampled)
2**16@Test x 14,124 ops/sec ±0.25% (1068 runs sampled)
2**32@Test x 11,984 ops/sec ±0.22% (1058 runs sampled)
2**32+1@Test x 3,592 ops/sec ±0.12% (1017 runs sampled)
max@Test x 4,351 ops/sec ±0.15% (1021 runs sampled) Quick summary take on the two last runs:
|
New measurements at 1b48921: uniformIntDistribution[0;96]...............................@Reference x 39,660 ops/sec ±0.56% (1074 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Reference x 37,922 ops/sec ±0.35% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Reference x 25,598 ops/sec ±0.28% (1088 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Reference x 19,794 ops/sec ±0.32% (1089 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Reference x 25,794 ops/sec ±0.32% (1088 runs sampled)
uniformIntDistribution[0;96]...............................@Test x 18,113 ops/sec ±0.31% (1087 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Test x 18,210 ops/sec ±0.32% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Test x 14,940 ops/sec ±0.25% (1071 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Test x 4,376 ops/sec ±0.16% (1021 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Test x 6,951 ops/sec ±0.19% (1034 runs sampled)
uniformIntDistribution[0;96]...............................@Reference x 24,028 ops/sec ±0.33% (1090 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Reference x 24,041 ops/sec ±0.33% (1090 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Reference x 18,332 ops/sec ±0.25% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Reference x 18,256 ops/sec ±0.29% (1087 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Reference x 21,814 ops/sec ±0.34% (1089 runs sampled)
uniformIntDistribution[0;96]...............................@Test x 18,392 ops/sec ±0.32% (1089 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Test x 18,376 ops/sec ±0.31% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Test x 15,037 ops/sec ±0.26% (1073 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Test x 4,617 ops/sec ±0.14% (1022 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Test x 7,088 ops/sec ±0.20% (1034 runs sampled)
uniformIntDistribution[0;96]...............................@Reference x 24,052 ops/sec ±0.34% (1087 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Reference x 24,133 ops/sec ±0.34% (1088 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Reference x 18,410 ops/sec ±0.28% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Reference x 18,290 ops/sec ±0.31% (1086 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Reference x 21,908 ops/sec ±0.36% (1085 runs sampled)
uniformIntDistribution[0;96]...............................@Test x 18,341 ops/sec ±0.33% (1086 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Test x 18,245 ops/sec ±0.31% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Test x 15,004 ops/sec ±0.26% (1072 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Test x 4,603 ops/sec ±0.17% (1022 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Test x 7,108 ops/sec ±0.18% (1035 runs sampled)
uniformIntDistribution[0;96]...............................@Reference x 24,112 ops/sec ±0.31% (1088 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Reference x 24,115 ops/sec ±0.34% (1088 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Reference x 18,361 ops/sec ±0.28% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Reference x 18,150 ops/sec ±0.29% (1085 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Reference x 21,466 ops/sec ±0.32% (1085 runs sampled)
uniformIntDistribution[0;96]...............................@Test x 18,300 ops/sec ±0.34% (1087 runs sampled)
uniformIntDistribution[0;0xffff]...........................@Test x 18,356 ops/sec ±0.33% (1087 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@Test x 15,046 ops/sec ±0.24% (1072 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@Test x 4,640 ops/sec ±0.16% (1022 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@Test x 7,085 ops/sec ±0.21% (1034 runs sampled) Quick summary take on the two last runs:
|
We considered multiple commits during the comparisons: v3.1.0 (062041a) Command: yarn bench \
-c 062041a39eff50db57ad3dd3a3742a4f11e53cb9:v3.1.0 \
-c 538c008283a10cfca78b20ae82765028a8a751f2:master \
-c c017f2be702dda219dc98df2ca2cc85f4795e469:basic \
-c 1892e2944e907868fa4b62f500acd32f2ad8f67e:shared-arrays \
-c 40b1997674f517d11aa03a042c94dfec505d68eb:extract-large \
-c 154f58b0aff8a53bef5d3716a140131b70c36d20:last-optims Run in Travis against node 12.19.0INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 23,197 ops/sec ±0.19% (591 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 23,069 ops/sec ±0.16% (593 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 19,544 ops/sec ±0.21% (592 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 19,496 ops/sec ±0.21% (592 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 23,497 ops/sec ±0.24% (592 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 23,301 ops/sec ±0.17% (593 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 19,684 ops/sec ±0.21% (591 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 19,476 ops/sec ±0.30% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 19,963 ops/sec ±0.14% (593 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 19,589 ops/sec ±0.17% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 17,189 ops/sec ±0.37% (587 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 17,260 ops/sec ±0.18% (593 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 2,401 ops/sec ±0.26% (523 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 2,384 ops/sec ±0.22% (523 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 3,847 ops/sec ±0.26% (538 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 4,082 ops/sec ±0.21% (539 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 36,578 ops/sec ±0.25% (589 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 2,392 ops/sec ±0.32% (523 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 5,749 ops/sec ±0.30% (555 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 7,154 ops/sec ±0.23% (569 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +0.56 % │ +18.69 % │ +18.99 % │
│ master(538c0082) │ -0.55 % │ - │ +18.04 % │ +18.33 % │
│ basic(c017f2be) │ -15.75 % │ -15.28 % │ - │ +0.25 % │
│ shared-arrays(1892e294) │ -15.96 % │ -15.49 % │ -0.25 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +0.84 % │ +19.37 % │ +20.65 % │
│ master(538c0082) │ -0.83 % │ - │ +18.38 % │ +19.64 % │
│ basic(c017f2be) │ -16.23 % │ -15.52 % │ - │ +1.07 % │
│ shared-arrays(1892e294) │ -17.11 % │ -16.42 % │ -1.06 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +1.91 % │ +16.14 % │ +15.66 % │
│ master(538c0082) │ -1.87 % │ - │ +13.96 % │ +13.50 % │
│ basic(c017f2be) │ -13.90 % │ -12.25 % │ - │ -0.41 % │
│ shared-arrays(1892e294) │ -13.54 % │ -11.89 % │ +0.41 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +0.71 % │ -37.60 % │ -41.19 % │
│ master(538c0082) │ -0.71 % │ - │ -38.04 % │ -41.60 % │
│ basic(c017f2be) │ +60.26 % │ +61.40 % │ - │ -5.75 % │
│ shared-arrays(1892e294) │ +70.03 % │ +71.24 % │ +6.10 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +1429.35 % │ +536.20 % │ +411.27 % │
│ master(538c0082) │ -93.46 % │ - │ -58.40 % │ -66.57 % │
│ basic(c017f2be) │ -84.28 % │ +140.39 % │ - │ -19.64 % │
│ shared-arrays(1892e294) │ -80.44 % │ +199.12 % │ +24.43 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘ Run in Travis against node 13.14.0INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 24,174 ops/sec ±0.15% (592 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 23,821 ops/sec ±0.16% (590 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 19,403 ops/sec ±0.18% (590 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 19,515 ops/sec ±0.18% (591 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 24,397 ops/sec ±0.15% (592 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 23,742 ops/sec ±0.15% (592 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 19,418 ops/sec ±0.17% (591 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 19,585 ops/sec ±0.16% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 20,397 ops/sec ±0.16% (591 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 19,913 ops/sec ±0.18% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 17,250 ops/sec ±0.15% (590 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 17,038 ops/sec ±0.19% (590 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 2,362 ops/sec ±0.23% (523 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 2,356 ops/sec ±0.22% (523 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 3,758 ops/sec ±0.15% (537 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 4,232 ops/sec ±0.10% (541 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 2,391 ops/sec ±0.26% (523 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 2,375 ops/sec ±0.24% (523 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 5,510 ops/sec ±0.19% (554 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 7,429 ops/sec ±0.15% (570 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +1.48 % │ +24.59 % │ +23.87 % │
│ master(538c0082) │ -1.46 % │ - │ +22.77 % │ +22.06 % │
│ basic(c017f2be) │ -19.74 % │ -18.55 % │ - │ -0.57 % │
│ shared-arrays(1892e294) │ -19.27 % │ -18.07 % │ +0.58 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +2.76 % │ +25.64 % │ +24.57 % │
│ master(538c0082) │ -2.69 % │ - │ +22.26 % │ +21.22 % │
│ basic(c017f2be) │ -20.41 % │ -18.21 % │ - │ -0.85 % │
│ shared-arrays(1892e294) │ -19.73 % │ -17.51 % │ +0.86 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +2.43 % │ +18.24 % │ +19.71 % │
│ master(538c0082) │ -2.37 % │ - │ +15.44 % │ +16.88 % │
│ basic(c017f2be) │ -15.43 % │ -13.37 % │ - │ +1.25 % │
│ shared-arrays(1892e294) │ -16.47 % │ -14.44 % │ -1.23 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +0.26 % │ -37.15 % │ -44.18 % │
│ master(538c0082) │ -0.26 % │ - │ -37.31 % │ -44.33 % │
│ basic(c017f2be) │ +59.10 % │ +59.52 % │ - │ -11.20 % │
│ shared-arrays(1892e294) │ +79.16 % │ +79.63 % │ +12.61 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +0.66 % │ -56.61 % │ -67.82 % │
│ master(538c0082) │ -0.66 % │ - │ -56.89 % │ -68.03 % │
│ basic(c017f2be) │ +130.46 % │ +131.98 % │ - │ -25.84 % │
│ shared-arrays(1892e294) │ +210.75 % │ +212.80 % │ +34.84 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘ Run in Travis against node 14.15.0INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 26,227 ops/sec ±0.15% (593 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 25,260 ops/sec ±0.14% (592 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 20,968 ops/sec ±0.16% (592 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 20,530 ops/sec ±0.19% (592 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 26,202 ops/sec ±0.16% (591 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 25,379 ops/sec ±0.16% (592 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 21,243 ops/sec ±0.16% (590 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 21,002 ops/sec ±0.18% (593 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 22,280 ops/sec ±0.14% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 21,408 ops/sec ±0.18% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 18,363 ops/sec ±0.16% (593 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 18,384 ops/sec ±0.16% (593 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 17,596 ops/sec ±0.17% (592 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 21,331 ops/sec ±0.21% (592 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 4,091 ops/sec ±0.10% (539 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 4,446 ops/sec ±0.12% (543 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 20,253 ops/sec ±0.19% (591 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 24,390 ops/sec ±0.15% (592 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 6,170 ops/sec ±0.15% (560 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 7,954 ops/sec ±0.14% (576 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +3.83 % │ +25.08 % │ +27.75 % │
│ master(538c0082) │ -3.69 % │ - │ +20.47 % │ +23.04 % │
│ basic(c017f2be) │ -20.05 % │ -16.99 % │ - │ +2.13 % │
│ shared-arrays(1892e294) │ -21.72 % │ -18.73 % │ -2.09 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +3.24 % │ +23.34 % │ +24.76 % │
│ master(538c0082) │ -3.14 % │ - │ +19.47 % │ +20.84 % │
│ basic(c017f2be) │ -18.92 % │ -16.30 % │ - │ +1.15 % │
│ shared-arrays(1892e294) │ -19.84 % │ -17.25 % │ -1.14 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +4.07 % │ +21.33 % │ +21.19 % │
│ master(538c0082) │ -3.91 % │ - │ +16.58 % │ +16.45 % │
│ basic(c017f2be) │ -17.58 % │ -14.22 % │ - │ -0.11 % │
│ shared-arrays(1892e294) │ -17.49 % │ -14.13 % │ +0.11 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ -17.51 % │ +330.12 % │ +295.78 % │
│ master(538c0082) │ +21.23 % │ - │ +421.43 % │ +379.81 % │
│ basic(c017f2be) │ -76.75 % │ -80.82 % │ - │ -7.98 % │
│ shared-arrays(1892e294) │ -74.73 % │ -79.16 % │ +8.67 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ -16.96 % │ +228.27 % │ +154.62 % │
│ master(538c0082) │ +20.42 % │ - │ +295.31 % │ +206.62 % │
│ basic(c017f2be) │ -69.54 % │ -74.70 % │ - │ -22.43 % │
│ shared-arrays(1892e294) │ -60.73 % │ -67.39 % │ +28.92 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘ Run in Travis against node 15.0.1INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 26,377 ops/sec ±0.24% (592 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 24,806 ops/sec ±0.38% (592 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 20,522 ops/sec ±0.30% (590 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 20,426 ops/sec ±0.28% (590 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 26,297 ops/sec ±0.38% (589 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 25,293 ops/sec ±0.31% (591 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 20,842 ops/sec ±0.25% (591 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 20,369 ops/sec ±0.31% (588 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 21,947 ops/sec ±0.31% (590 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 20,658 ops/sec ±0.19% (592 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 17,791 ops/sec ±0.21% (588 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 17,774 ops/sec ±0.16% (590 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 21,238 ops/sec ±0.21% (590 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 20,446 ops/sec ±0.26% (589 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 4,051 ops/sec ±0.21% (539 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 4,346 ops/sec ±0.18% (542 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 24,566 ops/sec ±0.23% (587 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 23,311 ops/sec ±0.26% (590 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 5,957 ops/sec ±0.25% (557 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 7,603 ops/sec ±0.27% (573 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +6.33 % │ +28.53 % │ +29.13 % │
│ master(538c0082) │ -5.96 % │ - │ +20.87 % │ +21.44 % │
│ basic(c017f2be) │ -22.20 % │ -17.27 % │ - │ +0.47 % │
│ shared-arrays(1892e294) │ -22.56 % │ -17.65 % │ -0.46 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +3.97 % │ +26.17 % │ +29.10 % │
│ master(538c0082) │ -3.82 % │ - │ +21.36 % │ +24.17 % │
│ basic(c017f2be) │ -20.74 % │ -17.60 % │ - │ +2.32 % │
│ shared-arrays(1892e294) │ -22.54 % │ -19.47 % │ -2.27 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +6.24 % │ +23.36 % │ +23.48 % │
│ master(538c0082) │ -5.87 % │ - │ +16.11 % │ +16.23 % │
│ basic(c017f2be) │ -18.94 % │ -13.88 % │ - │ +0.10 % │
│ shared-arrays(1892e294) │ -19.02 % │ -13.96 % │ -0.10 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +3.88 % │ +424.23 % │ +388.71 % │
│ master(538c0082) │ -3.73 % │ - │ +404.68 % │ +370.48 % │
│ basic(c017f2be) │ -80.92 % │ -80.19 % │ - │ -6.78 % │
│ shared-arrays(1892e294) │ -79.54 % │ -78.75 % │ +7.27 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ - │ +5.38 % │ +312.39 % │ +223.12 % │
│ master(538c0082) │ -5.11 % │ - │ +291.33 % │ +206.61 % │
│ basic(c017f2be) │ -75.75 % │ -74.45 % │ - │ -21.65 % │
│ shared-arrays(1892e294) │ -69.05 % │ -67.39 % │ +27.63 % │ - │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┘ As measurements obtained while comparing v3.1.0 with master does not seem to properly represent the reality (the code is more or less the same), another flag will be added to the benchmark runner in order to be able to ask to run benchmarks multiple times during the same benchmark session. Run on personal server against node 14INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 2,122 ops/sec ±0.15% (519 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 2,033 ops/sec ±0.18% (518 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 1,784 ops/sec ±0.11% (516 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 2,047 ops/sec ±0.17% (518 runs sampled)
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3)(2) x 2,114 ops/sec ±0.13% (519 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082)(2) x 2,042 ops/sec ±0.14% (518 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be)(2) x 1,781 ops/sec ±0.27% (516 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294)(2) x 2,062 ops/sec ±0.10% (518 runs sampled)
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3)(3) x 2,118 ops/sec ±0.15% (519 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082)(3) x 2,009 ops/sec ±0.28% (518 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be)(3) x 1,783 ops/sec ±0.10% (516 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294)(3) x 2,051 ops/sec ±0.20% (518 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 2,123 ops/sec ±0.12% (519 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 2,057 ops/sec ±0.13% (518 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 1,772 ops/sec ±0.15% (516 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 2,063 ops/sec ±0.12% (518 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3)(2) x 2,113 ops/sec ±0.13% (519 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082)(2) x 1,991 ops/sec ±0.17% (518 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be)(2) x 1,783 ops/sec ±0.13% (516 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294)(2) x 2,063 ops/sec ±0.11% (518 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3)(3) x 2,119 ops/sec ±0.17% (519 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082)(3) x 1,977 ops/sec ±0.14% (518 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be)(3) x 1,765 ops/sec ±0.18% (516 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294)(3) x 2,063 ops/sec ±0.15% (518 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 2,037 ops/sec ±0.19% (518 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 1,903 ops/sec ±0.11% (517 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 1,707 ops/sec ±0.13% (515 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 1,935 ops/sec ±0.22% (518 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3)(2) x 2,025 ops/sec ±0.16% (518 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082)(2) x 1,902 ops/sec ±0.13% (517 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be)(2) x 1,708 ops/sec ±0.12% (515 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294)(2) x 1,972 ops/sec ±0.32% (518 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3)(3) x 2,029 ops/sec ±0.15% (518 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082)(3) x 1,902 ops/sec ±0.12% (517 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be)(3) x 1,706 ops/sec ±0.13% (515 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294)(3) x 1,974 ops/sec ±0.10% (518 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 1,564 ops/sec ±0.13% (514 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 1,476 ops/sec ±0.11% (513 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 402 ops/sec ±0.07% (503 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 472 ops/sec ±0.07% (504 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3)(2) x 1,569 ops/sec ±0.15% (514 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082)(2) x 1,475 ops/sec ±0.12% (513 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be)(2) x 402 ops/sec ±0.07% (503 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294)(2) x 471 ops/sec ±0.10% (504 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3)(3) x 1,565 ops/sec ±0.15% (514 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082)(3) x 1,475 ops/sec ±0.11% (513 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be)(3) x 401 ops/sec ±0.07% (503 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294)(3) x 477 ops/sec ±0.09% (504 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 1,579 ops/sec ±0.17% (514 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 1,494 ops/sec ±0.14% (514 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 669 ops/sec ±0.10% (506 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 845 ops/sec ±0.11% (507 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3)(2) x 1,570 ops/sec ±0.13% (514 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082)(2) x 1,500 ops/sec ±0.11% (513 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be)(2) x 669 ops/sec ±0.10% (506 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294)(2) x 848 ops/sec ±0.17% (508 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3)(3) x 1,575 ops/sec ±0.15% (514 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082)(3) x 1,500 ops/sec ±0.12% (514 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be)(3) x 669 ops/sec ±0.10% (506 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294)(3) x 847 ops/sec ±0.10% (508 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌────────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ v3.1.0(062041a3)(2) │ master(538c0082)(2) │ basic(c017f2be)(2) │ shared-arrays(1892e294)(2) │ v3.1.0(062041a3)(3) │ master(538c0082)(3) │ basic(c017f2be)(3) │ shared-arrays(1892e294)(3) │
├────────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┤
│ v3.1.0(062041a3) │ - │ +4.38 % │ +18.95 % │ +3.67 % │ +0.38 % │ +3.88 % │ +19.09 % │ +2.92 % │ +0.19 % │ +5.61 % │ +19.03 % │ +3.47 % │
│ master(538c0082) │ -4.20 % │ - │ +13.95 % │ -0.69 % │ -3.84 % │ -0.48 % │ +14.10 % │ -1.40 % │ -4.02 % │ +1.17 % │ +14.03 % │ -0.88 % │
│ basic(c017f2be) │ -15.93 % │ -12.24 % │ - │ -12.85 % │ -15.61 % │ -12.67 % │ +0.13 % │ -13.48 % │ -15.77 % │ -11.22 % │ +0.07 % │ -13.01 % │
│ shared-arrays(1892e294) │ -3.54 % │ +0.69 % │ +14.74 % │ - │ -3.17 % │ +0.20 % │ +14.88 % │ -0.72 % │ -3.35 % │ +1.87 % │ +14.82 % │ -0.19 % │
│ v3.1.0(062041a3)(2) │ -0.37 % │ +3.99 % │ +18.50 % │ +3.28 % │ - │ +3.49 % │ +18.65 % │ +2.53 % │ -0.19 % │ +5.21 % │ +18.58 % │ +3.08 % │
│ master(538c0082)(2) │ -3.73 % │ +0.49 % │ +14.51 % │ -0.20 % │ -3.37 % │ - │ +14.65 % │ -0.92 % │ -3.55 % │ +1.66 % │ +14.58 % │ -0.39 % │
│ basic(c017f2be)(2) │ -16.03 % │ -12.35 % │ -0.13 % │ -12.96 % │ -15.72 % │ -12.78 % │ - │ -13.58 % │ -15.88 % │ -11.33 % │ -0.06 % │ -13.12 % │
│ shared-arrays(1892e294)(2) │ -2.83 % │ +1.42 % │ +15.57 % │ +0.73 % │ -2.47 % │ +0.93 % │ +15.72 % │ - │ -2.65 % │ +2.61 % │ +15.65 % │ +0.53 % │
│ v3.1.0(062041a3)(3) │ -0.19 % │ +4.19 % │ +18.72 % │ +3.47 % │ +0.19 % │ +3.68 % │ +18.87 % │ +2.72 % │ - │ +5.41 % │ +18.80 % │ +3.27 % │
│ master(538c0082)(3) │ -5.31 % │ -1.16 % │ +12.63 % │ -1.84 % │ -4.95 % │ -1.64 % │ +12.77 % │ -2.55 % │ -5.13 % │ - │ +12.71 % │ -2.03 % │
│ basic(c017f2be)(3) │ -15.99 % │ -12.30 % │ -0.07 % │ -12.91 % │ -15.67 % │ -12.73 % │ +0.06 % │ -13.53 % │ -15.83 % │ -11.28 % │ - │ -13.07 % │
│ shared-arrays(1892e294)(3) │ -3.35 % │ +0.88 % │ +14.96 % │ +0.19 % │ -2.99 % │ +0.40 % │ +15.10 % │ -0.53 % │ -3.17 % │ +2.07 % │ +15.04 % │ - │
└────────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌────────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ v3.1.0(062041a3)(2) │ master(538c0082)(2) │ basic(c017f2be)(2) │ shared-arrays(1892e294)(2) │ v3.1.0(062041a3)(3) │ master(538c0082)(3) │ basic(c017f2be)(3) │ shared-arrays(1892e294)(3) │
├────────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┤
│ v3.1.0(062041a3) │ - │ +3.23 % │ +19.81 % │ +2.94 % │ +0.46 % │ +6.66 % │ +19.11 % │ +2.92 % │ +0.18 % │ +7.39 % │ +20.31 % │ +2.93 % │
│ master(538c0082) │ -3.13 % │ - │ +16.06 % │ -0.29 % │ -2.69 % │ +3.31 % │ +15.37 % │ -0.30 % │ -2.96 % │ +4.03 % │ +16.54 % │ -0.30 % │
│ basic(c017f2be) │ -16.54 % │ -13.84 % │ - │ -14.09 % │ -16.16 % │ -10.98 % │ -0.59 % │ -14.10 % │ -16.39 % │ -10.37 % │ +0.42 % │ -14.09 % │
│ shared-arrays(1892e294) │ -2.85 % │ +0.29 % │ +16.40 % │ - │ -2.41 % │ +3.61 % │ +15.71 % │ -0.01 % │ -2.68 % │ +4.33 % │ +16.88 % │ -0.01 % │
│ v3.1.0(062041a3)(2) │ -0.45 % │ +2.76 % │ +19.27 % │ +2.47 % │ - │ +6.17 % │ +18.56 % │ +2.46 % │ -0.27 % │ +6.90 % │ +19.77 % │ +2.46 % │
│ master(538c0082)(2) │ -6.24 % │ -3.21 % │ +12.34 % │ -3.49 % │ -5.81 % │ - │ +11.67 % │ -3.50 % │ -6.07 % │ +0.69 % │ +12.80 % │ -3.50 % │
│ basic(c017f2be)(2) │ -16.04 % │ -13.33 % │ +0.59 % │ -13.57 % │ -15.66 % │ -10.45 % │ - │ -13.59 % │ -15.89 % │ -9.84 % │ +1.01 % │ -13.58 % │
│ shared-arrays(1892e294)(2) │ -2.84 % │ +0.30 % │ +16.41 % │ +0.01 % │ -2.40 % │ +3.63 % │ +15.72 % │ - │ -2.66 % │ +4.34 % │ +16.90 % │ +0.00 % │
│ v3.1.0(062041a3)(3) │ -0.18 % │ +3.05 % │ +19.60 % │ +2.75 % │ +0.28 % │ +6.46 % │ +18.89 % │ +2.74 % │ - │ +7.20 % │ +20.10 % │ +2.74 % │
│ master(538c0082)(3) │ -6.88 % │ -3.87 % │ +11.57 % │ -4.15 % │ -6.46 % │ -0.68 % │ +10.91 % │ -4.16 % │ -6.71 % │ - │ +12.03 % │ -4.15 % │
│ basic(c017f2be)(3) │ -16.88 % │ -14.20 % │ -0.41 % │ -14.44 % │ -16.50 % │ -11.35 % │ -1.00 % │ -14.45 % │ -16.73 % │ -10.74 % │ - │ -14.45 % │
│ shared-arrays(1892e294)(3) │ -2.85 % │ +0.30 % │ +16.41 % │ +0.01 % │ -2.40 % │ +3.62 % │ +15.72 % │ -0.00 % │ -2.67 % │ +4.33 % │ +16.89 % │ - │
└────────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌────────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ v3.1.0(062041a3)(2) │ master(538c0082)(2) │ basic(c017f2be)(2) │ shared-arrays(1892e294)(2) │ v3.1.0(062041a3)(3) │ master(538c0082)(3) │ basic(c017f2be)(3) │ shared-arrays(1892e294)(3) │
├────────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┤
│ v3.1.0(062041a3) │ - │ +7.03 % │ +19.30 % │ +5.25 % │ +0.56 % │ +7.08 % │ +19.28 % │ +3.26 % │ +0.38 % │ +7.09 % │ +19.37 % │ +3.20 % │
│ master(538c0082) │ -6.57 % │ - │ +11.46 % │ -1.67 % │ -6.05 % │ +0.05 % │ +11.44 % │ -3.53 % │ -6.22 % │ +0.06 % │ +11.52 % │ -3.58 % │
│ basic(c017f2be) │ -16.18 % │ -10.28 % │ - │ -11.78 % │ -15.71 % │ -10.24 % │ -0.02 % │ -13.45 % │ -15.86 % │ -10.23 % │ +0.06 % │ -13.49 % │
│ shared-arrays(1892e294) │ -4.99 % │ +1.70 % │ +13.35 % │ - │ -4.46 % │ +1.74 % │ +13.33 % │ -1.89 % │ -4.63 % │ +1.75 % │ +13.41 % │ -1.94 % │
│ v3.1.0(062041a3)(2) │ -0.56 % │ +6.44 % │ +18.64 % │ +4.66 % │ - │ +6.49 % │ +18.62 % │ +2.68 % │ -0.18 % │ +6.50 % │ +18.70 % │ +2.63 % │
│ master(538c0082)(2) │ -6.61 % │ -0.05 % │ +11.41 % │ -1.71 % │ -6.09 % │ - │ +11.39 % │ -3.57 % │ -6.26 % │ +0.01 % │ +11.47 % │ -3.62 % │
│ basic(c017f2be)(2) │ -16.16 % │ -10.27 % │ +0.02 % │ -11.76 % │ -15.70 % │ -10.23 % │ - │ -13.43 % │ -15.85 % │ -10.22 % │ +0.07 % │ -13.48 % │
│ shared-arrays(1892e294)(2) │ -3.15 % │ +3.66 % │ +15.53 % │ +1.93 % │ -2.61 % │ +3.70 % │ +15.52 % │ - │ -2.79 % │ +3.72 % │ +15.60 % │ -0.05 % │
│ v3.1.0(062041a3)(3) │ -0.37 % │ +6.63 % │ +18.85 % │ +4.85 % │ +0.18 % │ +6.68 % │ +18.83 % │ +2.87 % │ - │ +6.69 % │ +18.92 % │ +2.82 % │
│ master(538c0082)(3) │ -6.62 % │ -0.06 % │ +11.40 % │ -1.72 % │ -6.10 % │ -0.01 % │ +11.38 % │ -3.58 % │ -6.27 % │ - │ +11.46 % │ -3.63 % │
│ basic(c017f2be)(3) │ -16.22 % │ -10.33 % │ -0.06 % │ -11.83 % │ -15.76 % │ -10.29 % │ -0.07 % │ -13.49 % │ -15.91 % │ -10.28 % │ - │ -13.54 % │
│ shared-arrays(1892e294)(3) │ -3.10 % │ +3.71 % │ +15.60 % │ +1.98 % │ -2.56 % │ +3.76 % │ +15.58 % │ +0.05 % │ -2.74 % │ +3.77 % │ +15.66 % │ - │
└────────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌────────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ v3.1.0(062041a3)(2) │ master(538c0082)(2) │ basic(c017f2be)(2) │ shared-arrays(1892e294)(2) │ v3.1.0(062041a3)(3) │ master(538c0082)(3) │ basic(c017f2be)(3) │ shared-arrays(1892e294)(3) │
├────────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┤
│ v3.1.0(062041a3) │ - │ +5.95 % │ +288.97 % │ +231.54 % │ -0.31 % │ +6.08 % │ +289.15 % │ +232.19 % │ -0.03 % │ +6.07 % │ +289.63 % │ +227.76 % │
│ master(538c0082) │ -5.61 % │ - │ +267.14 % │ +212.94 % │ -5.91 % │ +0.12 % │ +267.31 % │ +213.55 % │ -5.64 % │ +0.12 % │ +267.76 % │ +209.36 % │
│ basic(c017f2be) │ -74.29 % │ -72.76 % │ - │ -14.76 % │ -74.37 % │ -72.73 % │ +0.05 % │ -14.60 % │ -74.30 % │ -72.73 % │ +0.17 % │ -15.74 % │
│ shared-arrays(1892e294) │ -69.84 % │ -68.04 % │ +17.32 % │ - │ -69.93 % │ -68.01 % │ +17.37 % │ +0.20 % │ -69.85 % │ -68.01 % │ +17.52 % │ -1.14 % │
│ v3.1.0(062041a3)(2) │ +0.31 % │ +6.28 % │ +290.18 % │ +232.58 % │ - │ +6.41 % │ +290.36 % │ +233.23 % │ +0.29 % │ +6.40 % │ +290.84 % │ +228.78 % │
│ master(538c0082)(2) │ -5.73 % │ -0.12 % │ +266.69 % │ +212.55 % │ -6.02 % │ - │ +266.86 % │ +213.17 % │ -5.75 % │ -0.01 % │ +267.31 % │ +208.99 % │
│ basic(c017f2be)(2) │ -74.30 % │ -72.77 % │ -0.05 % │ -14.80 % │ -74.38 % │ -72.74 % │ - │ -14.64 % │ -74.31 % │ -72.74 % │ +0.12 % │ -15.78 % │
│ shared-arrays(1892e294)(2) │ -69.90 % │ -68.11 % │ +17.09 % │ -0.20 % │ -69.99 % │ -68.07 % │ +17.14 % │ - │ -69.90 % │ -68.07 % │ +17.29 % │ -1.34 % │
│ v3.1.0(062041a3)(3) │ +0.03 % │ +5.97 % │ +289.07 % │ +231.63 % │ -0.29 % │ +6.10 % │ +289.25 % │ +232.28 % │ - │ +6.10 % │ +289.73 % │ +227.84 % │
│ master(538c0082)(3) │ -5.72 % │ -0.12 % │ +266.71 % │ +212.57 % │ -6.02 % │ +0.01 % │ +266.88 % │ +213.19 % │ -5.75 % │ - │ +267.33 % │ +209.00 % │
│ basic(c017f2be)(3) │ -74.33 % │ -72.81 % │ -0.17 % │ -14.91 % │ -74.41 % │ -72.78 % │ -0.12 % │ -14.74 % │ -74.34 % │ -72.78 % │ - │ -15.88 % │
│ shared-arrays(1892e294)(3) │ -69.49 % │ -67.68 % │ +18.68 % │ +1.15 % │ -69.58 % │ -67.64 % │ +18.73 % │ +1.35 % │ -69.50 % │ -67.64 % │ +18.88 % │ - │
└────────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌────────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┬─────────────────────┬─────────────────────┬────────────────────┬────────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ v3.1.0(062041a3)(2) │ master(538c0082)(2) │ basic(c017f2be)(2) │ shared-arrays(1892e294)(2) │ v3.1.0(062041a3)(3) │ master(538c0082)(3) │ basic(c017f2be)(3) │ shared-arrays(1892e294)(3) │
├────────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┼─────────────────────┼─────────────────────┼────────────────────┼────────────────────────────┤
│ v3.1.0(062041a3) │ - │ +5.69 % │ +136.04 % │ +86.92 % │ +0.60 % │ +5.26 % │ +135.93 % │ +86.30 % │ +0.26 % │ +5.26 % │ +136.14 % │ +86.37 % │
│ master(538c0082) │ -5.38 % │ - │ +123.34 % │ +76.86 % │ -4.81 % │ -0.40 % │ +123.24 % │ +76.27 % │ -5.13 % │ -0.40 % │ +123.44 % │ +76.35 % │
│ basic(c017f2be) │ -57.63 % │ -55.22 % │ - │ -20.81 % │ -57.38 % │ -55.40 % │ -0.04 % │ -21.07 % │ -57.52 % │ -55.40 % │ +0.04 % │ -21.04 % │
│ shared-arrays(1892e294) │ -46.50 % │ -43.46 % │ +26.28 % │ - │ -46.18 % │ -43.68 % │ +26.22 % │ -0.33 % │ -46.36 % │ -43.68 % │ +26.34 % │ -0.29 % │
│ v3.1.0(062041a3)(2) │ -0.60 % │ +5.06 % │ +134.63 % │ +85.80 % │ - │ +4.63 % │ +134.53 % │ +85.19 % │ -0.33 % │ +4.64 % │ +134.74 % │ +85.26 % │
│ master(538c0082)(2) │ -5.00 % │ +0.40 % │ +124.24 % │ +77.57 % │ -4.43 % │ - │ +124.14 % │ +76.99 % │ -4.75 % │ +0.00 % │ +124.34 % │ +77.06 % │
│ basic(c017f2be)(2) │ -57.62 % │ -55.20 % │ +0.04 % │ -20.78 % │ -57.36 % │ -55.38 % │ - │ -21.04 % │ -57.50 % │ -55.38 % │ +0.09 % │ -21.01 % │
│ shared-arrays(1892e294)(2) │ -46.32 % │ -43.27 % │ +26.70 % │ +0.33 % │ -46.00 % │ -43.50 % │ +26.64 % │ - │ -46.18 % │ -43.50 % │ +26.76 % │ +0.04 % │
│ v3.1.0(062041a3)(3) │ -0.26 % │ +5.41 % │ +135.42 % │ +86.42 % │ +0.34 % │ +4.99 % │ +135.31 % │ +85.81 % │ - │ +4.99 % │ +135.52 % │ +85.88 % │
│ master(538c0082)(3) │ -5.00 % │ +0.40 % │ +124.24 % │ +77.57 % │ -4.43 % │ -0.00 % │ +124.14 % │ +76.98 % │ -4.75 % │ - │ +124.34 % │ +77.06 % │
│ basic(c017f2be)(3) │ -57.65 % │ -55.24 % │ -0.04 % │ -20.85 % │ -57.40 % │ -55.42 % │ -0.09 % │ -21.11 % │ -57.54 % │ -55.42 % │ - │ -21.08 % │
│ shared-arrays(1892e294)(3) │ -46.34 % │ -43.29 % │ +26.65 % │ +0.29 % │ -46.02 % │ -43.52 % │ +26.59 % │ -0.04 % │ -46.20 % │ -43.52 % │ +26.70 % │ - │
└────────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┴─────────────────────┴─────────────────────┴────────────────────┴────────────────────────────┘ Run on personal server against node 14INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 26,342 ops/sec ±0.64% (5067 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 50,358 ops/sec ±0.24% (5067 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 48,998 ops/sec ±0.24% (5066 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 39,078 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;96]...............................@extract-large(40b19976) x 49,396 ops/sec ±0.26% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 55,518 ops/sec ±0.26% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 50,736 ops/sec ±0.27% (5067 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 49,175 ops/sec ±0.28% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 39,147 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;0xffff]...........................@extract-large(40b19976) x 49,133 ops/sec ±0.25% (5066 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 47,778 ops/sec ±0.27% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 42,909 ops/sec ±0.26% (5065 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 37,640 ops/sec ±0.25% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 37,504 ops/sec ±0.26% (5065 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@extract-large(40b19976) x 46,392 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 38,530 ops/sec ±0.24% (5066 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 34,227 ops/sec ±0.25% (5065 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 11,972 ops/sec ±0.54% (5065 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 14,367 ops/sec ±0.57% (5066 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@extract-large(40b19976) x 13,580 ops/sec ±0.51% (5066 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 38,522 ops/sec ±0.26% (5065 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 33,963 ops/sec ±0.28% (5067 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 11,891 ops/sec ±0.64% (5065 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 18,274 ops/sec ±0.46% (5067 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@extract-large(40b19976) x 18,448 ops/sec ±0.26% (5065 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ — │ -47.69 % │ -46.24 % │ -32.59 % │ -46.67 % │
│ master(538c0082) │ +91.17 % │ — │ +2.77 % │ +28.87 % │ +1.95 % │
│ basic(c017f2be) │ +86.01 % │ -2.70 % │ — │ +25.39 % │ -0.81 % │
│ shared-arrays(1892e294) │ +48.35 % │ -22.40 % │ -20.25 % │ — │ -20.89 % │
│ extract-large(40b19976) │ +87.52 % │ -1.91 % │ +0.81 % │ +26.41 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ — │ +9.42 % │ +12.90 % │ +41.82 % │ +13.00 % │
│ master(538c0082) │ -8.61 % │ — │ +3.18 % │ +29.60 % │ +3.26 % │
│ basic(c017f2be) │ -11.42 % │ -3.08 % │ — │ +25.61 % │ +0.09 % │
│ shared-arrays(1892e294) │ -29.49 % │ -22.84 % │ -20.39 % │ — │ -20.32 % │
│ extract-large(40b19976) │ -11.50 % │ -3.16 % │ -0.09 % │ +25.51 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ — │ +11.35 % │ +26.94 % │ +27.40 % │ +2.99 % │
│ master(538c0082) │ -10.19 % │ — │ +14.00 % │ +14.41 % │ -7.51 % │
│ basic(c017f2be) │ -21.22 % │ -12.28 % │ — │ +0.36 % │ -18.87 % │
│ shared-arrays(1892e294) │ -21.50 % │ -12.60 % │ -0.36 % │ — │ -19.16 % │
│ extract-large(40b19976) │ -2.90 % │ +8.12 % │ +23.25 % │ +23.70 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ — │ +12.57 % │ +221.83 % │ +168.19 % │ +183.72 % │
│ master(538c0082) │ -11.17 % │ — │ +185.89 % │ +138.24 % │ +152.04 % │
│ basic(c017f2be) │ -68.93 % │ -65.02 % │ — │ -16.67 % │ -11.84 % │
│ shared-arrays(1892e294) │ -62.71 % │ -58.03 % │ +20.00 % │ — │ +5.79 % │
│ extract-large(40b19976) │ -64.75 % │ -60.32 % │ +13.43 % │ -5.47 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┤
│ v3.1.0(062041a3) │ — │ +13.43 % │ +223.95 % │ +110.81 % │ +108.82 % │
│ master(538c0082) │ -11.84 % │ — │ +185.61 % │ +85.86 % │ +84.10 % │
│ basic(c017f2be) │ -69.13 % │ -64.99 % │ — │ -34.93 % │ -35.54 % │
│ shared-arrays(1892e294) │ -52.56 % │ -46.20 % │ +53.67 % │ — │ -0.94 % │
│ extract-large(40b19976) │ -52.11 % │ -45.68 % │ +55.13 % │ +0.95 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┘ Run on personal server against node 14INFO Benchmark phase...
uniformIntDistribution[0;96]...............................@v3.1.0(062041a3) x 23,786 ops/sec ±0.26% (5064 runs sampled)
uniformIntDistribution[0;96]...............................@master(538c0082) x 50,668 ops/sec ±0.27% (5066 runs sampled)
uniformIntDistribution[0;96]...............................@basic(c017f2be) x 48,501 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;96]...............................@shared-arrays(1892e294) x 37,968 ops/sec ±0.27% (5065 runs sampled)
uniformIntDistribution[0;96]...............................@extract-large(40b19976) x 48,421 ops/sec ±0.25% (5065 runs sampled)
uniformIntDistribution[0;96]...............................@last-optims(154f58b0) x 48,689 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;0xffff]...........................@v3.1.0(062041a3) x 23,991 ops/sec ±0.24% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@master(538c0082) x 49,839 ops/sec ±0.27% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@basic(c017f2be) x 48,145 ops/sec ±0.25% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@shared-arrays(1892e294) x 37,948 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;0xffff]...........................@extract-large(40b19976) x 49,082 ops/sec ±0.28% (5066 runs sampled)
uniformIntDistribution[0;0xffff]...........................@last-optims(154f58b0) x 49,665 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@v3.1.0(062041a3) x 22,492 ops/sec ±0.26% (5064 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@master(538c0082) x 42,372 ops/sec ±0.28% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@basic(c017f2be) x 36,530 ops/sec ±0.28% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@shared-arrays(1892e294) x 37,296 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@extract-large(40b19976) x 45,062 ops/sec ±0.26% (5066 runs sampled)
uniformIntDistribution[0;0xffffffff].......................@last-optims(154f58b0) x 45,317 ops/sec ±0.29% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@v3.1.0(062041a3) x 19,719 ops/sec ±0.26% (5066 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@master(538c0082) x 34,178 ops/sec ±0.27% (5065 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@basic(c017f2be) x 12,054 ops/sec ±0.44% (5067 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@shared-arrays(1892e294) x 14,301 ops/sec ±0.50% (5066 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@extract-large(40b19976) x 13,617 ops/sec ±0.50% (5065 runs sampled)
uniformIntDistribution[0;0xffffffff+1].....................@last-optims(154f58b0) x 14,300 ops/sec ±0.50% (5066 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@v3.1.0(062041a3) x 19,963 ops/sec ±0.25% (5065 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@master(538c0082) x 33,721 ops/sec ±0.26% (5067 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@basic(c017f2be) x 11,770 ops/sec ±0.58% (5067 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@shared-arrays(1892e294) x 17,663 ops/sec ±0.24% (5067 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@extract-large(40b19976) x 18,703 ops/sec ±0.25% (5065 runs sampled)
uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]..@last-optims(154f58b0) x 18,097 ops/sec ±0.26% (5066 runs sampled)
INFO Reports
Stats for uniformIntDistribution[0;96]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┬───────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │ last-optims(154f58b0) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ v3.1.0(062041a3) │ — │ -53.06 % │ -50.96 % │ -37.35 % │ -50.88 % │ -51.15 % │
│ master(538c0082) │ +113.02 % │ — │ +4.47 % │ +33.45 % │ +4.64 % │ +4.06 % │
│ basic(c017f2be) │ +103.91 % │ -4.28 % │ — │ +27.74 % │ +0.17 % │ -0.39 % │
│ shared-arrays(1892e294) │ +59.63 % │ -25.07 % │ -21.72 % │ — │ -21.59 % │ -22.02 % │
│ extract-large(40b19976) │ +103.57 % │ -4.44 % │ -0.17 % │ +27.53 % │ — │ -0.55 % │
│ last-optims(154f58b0) │ +104.70 % │ -3.91 % │ +0.39 % │ +28.24 % │ +0.55 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Stats for uniformIntDistribution[0;0xffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┬───────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │ last-optims(154f58b0) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ v3.1.0(062041a3) │ — │ -51.86 % │ -50.17 % │ -36.78 % │ -51.12 % │ -51.69 % │
│ master(538c0082) │ +107.74 % │ — │ +3.52 % │ +31.33 % │ +1.54 % │ +0.35 % │
│ basic(c017f2be) │ +100.68 % │ -3.40 % │ — │ +26.87 % │ -1.91 % │ -3.06 % │
│ shared-arrays(1892e294) │ +58.18 % │ -23.86 % │ -21.18 % │ — │ -22.68 % │ -23.59 % │
│ extract-large(40b19976) │ +104.59 % │ -1.52 % │ +1.95 % │ +29.34 % │ — │ -1.17 % │
│ last-optims(154f58b0) │ +107.02 % │ -0.35 % │ +3.16 % │ +30.87 % │ +1.19 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┬───────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │ last-optims(154f58b0) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ v3.1.0(062041a3) │ — │ -46.92 % │ -38.43 % │ -39.70 % │ -50.09 % │ -50.37 % │
│ master(538c0082) │ +88.39 % │ — │ +15.99 % │ +13.61 % │ -5.97 % │ -6.50 % │
│ basic(c017f2be) │ +62.42 % │ -13.79 % │ — │ -2.06 % │ -18.93 % │ -19.39 % │
│ shared-arrays(1892e294) │ +65.82 % │ -11.98 % │ +2.10 % │ — │ -17.23 % │ -17.70 % │
│ extract-large(40b19976) │ +100.35 % │ +6.35 % │ +23.36 % │ +20.82 % │ — │ -0.56 % │
│ last-optims(154f58b0) │ +101.49 % │ +6.95 % │ +24.06 % │ +21.51 % │ +0.57 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Stats for uniformIntDistribution[0;0xffffffff+1]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┬───────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │ last-optims(154f58b0) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ v3.1.0(062041a3) │ — │ -42.31 % │ +63.59 % │ +37.89 % │ +44.81 % │ +37.90 % │
│ master(538c0082) │ +73.33 % │ — │ +183.55 % │ +139.00 % │ +151.00 % │ +139.01 % │
│ basic(c017f2be) │ -38.87 % │ -64.73 % │ — │ -15.71 % │ -11.48 % │ -15.71 % │
│ shared-arrays(1892e294) │ -27.48 % │ -58.16 % │ +18.64 % │ — │ +5.02 % │ +0.01 % │
│ extract-large(40b19976) │ -30.95 % │ -60.16 % │ +12.97 % │ -4.78 % │ — │ -4.78 % │
│ last-optims(154f58b0) │ -27.48 % │ -58.16 % │ +18.64 % │ -0.01 % │ +5.02 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Stats for uniformIntDistribution[MIN_SAFE_INTEGER;MAX_SAFE_INTEGER]
┌─────────────────────────┬──────────────────┬──────────────────┬─────────────────┬─────────────────────────┬─────────────────────────┬───────────────────────┐
│ Name │ v3.1.0(062041a3) │ master(538c0082) │ basic(c017f2be) │ shared-arrays(1892e294) │ extract-large(40b19976) │ last-optims(154f58b0) │
├─────────────────────────┼──────────────────┼──────────────────┼─────────────────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ v3.1.0(062041a3) │ — │ -40.80 % │ +69.62 % │ +13.02 % │ +6.74 % │ +10.31 % │
│ master(538c0082) │ +68.92 % │ — │ +186.51 % │ +90.91 % │ +80.30 % │ +86.33 % │
│ basic(c017f2be) │ -41.04 % │ -65.10 % │ — │ -33.37 % │ -37.07 % │ -34.96 % │
│ shared-arrays(1892e294) │ -11.52 % │ -47.62 % │ +50.07 % │ — │ -5.56 % │ -2.40 % │
│ extract-large(40b19976) │ -6.31 % │ -44.54 % │ +58.91 % │ +5.89 % │ — │ +3.35 % │
│ last-optims(154f58b0) │ -9.35 % │ -46.33 % │ +53.76 % │ +2.46 % │ -3.24 % │ — │
└─────────────────────────┴──────────────────┴──────────────────┴─────────────────┴─────────────────────────┴─────────────────────────┴───────────────────────┘ |
…into fix-uniformint
This reverts commit f189a57.
Just in case it may explain perfs issues
…into fix-uniformint
Let's analyze where we spend most of the time into the merged code: Case A function() {
let g = prand.xoroshiro128plus(42);
for (let idx = 0; idx !== 1000000; ++idx) {
g = prand.uniformIntDistribution(0, 0xffffffff+1, g)[1];
}
} Case B function() {
let g = prand.xoroshiro128plus(42);
for (let idx = 0; idx !== 1000000; ++idx) {
g = prand.uniformIntDistribution(Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, g)[1];
}
} Measured on Chrome 86.0.4240.183 (Build officiel) (64 bits) HTML document to play with pure-rand in Chrome<html>
<head>
<script type="module">
import prand from "./lib/esm/pure-rand.js";
const createAction = (actionName, action) => {
const btn = document.createElement('button');
btn.innerText = actionName;
btn.addEventListener('click', () => {
btn.style.color = 'green';
setTimeout(() => {
action();
btn.style.color = 'unset';
}, 0);
});
document.body.appendChild(btn);
}
createAction(
'Range [ 0 ; 0xffffffff+1 ]',
function() {
let g = prand.xoroshiro128plus(42);
for (let idx = 0; idx !== 1000000; ++idx) {
g = prand.uniformIntDistribution(0, 0xffffffff+1, g)[1];
}
}
);
createAction(
'Range [ MIN_SAFE_INTEGER ; MAX_SAFE_INTEGER ]',
function() {
let g = prand.xoroshiro128plus(42);
for (let idx = 0; idx !== 1000000; ++idx) {
g = prand.uniformIntDistribution(Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, g)[1];
}
}
);
</script>
</head>
<body>
</body>
</html> |
Several different implementation of the feature have been tried:
Several benchmarks have been launched in an attempt to compute the cost of each of them compared to the current version of the code:
* Here 20% means:
#OperationsPerSecond(shared-arrays) / #OperationsPerSecond(master) = 0.8
in other words master does 1.25 times more operations per seconds than shared-arrays.Test env details
node
docker -v
uname -a
lscpu
Our best implementation offers the same speed as the historical one for ranges containing up to 232 values. But it suffer from huge performance issues on values outside of the safe range. Nonetheless it might be possible to make it better in the future if needed.
One of the most important thing to keep in mind is that the initial code was not handling ranges larger than 232 properly thus even with such performance cost it is still better to fix the bug than letting it opened.
Fixes #63