Skip to content

Instantly share code, notes, and snippets.

@josephg
Created July 8, 2011 06:52
Show Gist options
  • Save josephg/1071272 to your computer and use it in GitHub Desktop.
Save josephg/1071272 to your computer and use it in GitHub Desktop.
Compare if two numbers have the same sign, benchmark.
<script>
var arr = [];
for (var i = 0; i < 100000; i++) {
num = Math.floor(Math.random() * 4147483648) - 2147483648 ;
if(num <= 0) {
num--;
}
arr.push(num);
}
// Task: iterate through the list, comparing each two adjacent elements and counting how many times
// elem[i+1] has the same sign as elem[i].
var nieve = function() {
var count = 0;
for (var i = 0; i < arr.length - 1; i++) {
if ((arr[i] < 0) == (arr[i + 1] < 0)) {
count++;
}
}
return count;
};
var mul = function() {
var count = 0;
for (var i = 0; i < arr.length - 1; i++) {
if (arr[i] * arr[i + 1] > 0) {
count++;
}
}
return count;
};
var xor = function() {
var count = 0;
for (var i = 0; i < arr.length - 1; i++) {
if ((arr[i] ^ arr[i + 1]) >= 0) {
count++;
}
}
return count;
};
var time = function(f) {
var start = Date.now();
for (var i = 0; i < 100; i++) {
f();
}
var end = Date.now();
return end - start;
};
document.write("nieve: " + time(nieve) + "ms, result = " + nieve());
document.write('<br/>');
document.write("mul: " + time(mul) + "ms, result = " + mul());
document.write('<br/>');
document.write("xor: " + time(xor) + "ms, result = " + xor());
document.write('<br/>');
</script>
@josephg
Copy link
Author

josephg commented Jul 8, 2011

Different! -13356609161 15558260098
-31c1dae89 39f583582
Different! 4012734302 -2029386714
ef2d775e -78f5fbda
Different! 13520524016 7048866547
325e2d2f0 1a4252af3
Different! -16290136002 -200033413
-3caf7bfc2 -bec4485
Different! -1016762189 -2554193398
-3c9a8f4d -983de5f6
Different! -11482856695 -8930616771
-2ac6e7cf7 -2144e65c3
Different! -12969612540 -15680216782
-3050c94fc -3a69d1ece
Different! -7608899423 -801581953
-1c586975f -2fc72b81
Different! -801581953 -15246330883
-2fc72b81 -38cc08c03
Different! -2659307232 6154927608
-9e81cee0 16edcbdf8
Different! 12890151751 7054473949
300501b47 1a47abadd
Different! 7054473949 -13455313216
1a47abadd -321ffc940
Different! -13455313216 -16221105580
-321ffc940 -3c6da6dac
Different! -6517100909 18411217028
-18473116d 44964e084
Different! -13513219346 15381586630
-325735d12 394d062c6
Different! 15381586630 -9421179436
394d062c6 -2318bca2c
Different! 14685882995 15465083431
36b58ca73 399ca7227
Different! 11981009363 10617790790
2ca1fb1d3 278dea146
Different! 1864899072 -16036613692
6f281a00 -3bbdb4e3c
Different! -16036613692 5376621577
-3bbdb4e3c 14078bc09
Different! 17743507654 4139203629
4219870c6 f6b73c2d
Different! -3199056782 -1113507950
-beadbb8e -425ec86e
Different! -1113507950 -17004930761
-425ec86e -3f592a6c9
Different! -17004930761 531002214
-3f592a6c9 1fa67366
Different! 531002214 -20581089236
1fa67366 -4caba7fd4
Different! 16450857975 -4523357883
3d48c2bf7 -10d9cf6bb
Different! -4523357883 19690303386
-10d9cf6bb 495a22f9a
Different! 15761969234 6337869908
3ab7c9052 179c43854
Different! 6337869908 -17134091772
179c43854 -3fd457dfc
Different! -12832006077 10039669019
-2fcd8dfbd 25669311b
Different! 10039669019 8115227495
25669311b 1e3b48b67
Different! -12854300888 18690426218
-2fe2d10d8 45a09456a
Different! 18690426218 -3816976477
45a09456a -e382705d
Different! -3816976477 1793005396
-e382705d 6adf1754
Different! 1793005396 -20618495603
6adf1754 -4ccf54673
Different! -20618495603 1199955950
-4ccf54673 4785dfee
Different! 1199955950 -12002151868
4785dfee -2cb624dbc
Different! -11653878660 -13884649324
-2b6a01384 -33b96ef6c
Different! 1224013064 12852782330
48f4f508 2fe15e4fa
Different! -7424140134 6036986180
-1ba836366 167d51944
Different! -4723108898 -10741493408
-11984ec22 -2803e2ea0
Different! -10741493408 -4855450846
-2803e2ea0 -121684cde
Different! 13785563883 3760855017
335af02eb e02a17e9
Different! 3760855017 -19246598265
e02a17e9 -47b2fc879
Different! 19290247828 -17009826548
47dc9d294 -3f5dd5af4
Different! -17009826548 -9227894875
-3f5dd5af4 -22606805b
Different! -9227894875 -21396400219
-22606805b -4fb53285b
Different! -21396400219 1383441299
-4fb53285b 5275a393
Different! 1383441299 12013864366
5275a393 2cc1505ae
Different! -7312204463 17258727485
-1b3d762af 404b3483d
Different! -654017108 16856084920
-26fb8254 3ecb371b8
Different! 12683455535 -6045204776
2f3fe2c2f -168528128
Different! -10045731873 -7746795681
-256c5b421 -1cdbeb8a1
Different! -7746795681 5889832890
-1cdbeb8a1 15f0fb7ba
Different! -4861613948 4170148352
-121c6577c f88f6a00
Different! 4170148352 10635194787
f88f6a00 279e831a3
Different! -6232643659 -16687780758
-1737e984b -3e2ab5396
Different! -16687780758 -18316592118
-3e2ab5396 -443c103f6
Different! 6365620667 16462384234
17b6ba9bb 3d53c0c6a
Different! -19504346907 2002633340
-48a8cb71b 775dc27c
Different! 610958882 -7721977162
246a7e22 -1cc44054a
Different! -11382055099 -13540929219
-2a66c60bb -3271a2ec3
Different! -13540929219 8474992014
-3271a2ec3 1f9261d8e
Different! 12624097552 13285993839
2f0747110 317e82d6f
Different! 13285993839 -7384412897
317e82d6f -1b82532e1
Different! -7384412897 5216505462
-1b82532e1 136ed8e76
Different! 10248337279 -16802548221
262d9377f -3e98289fd
Different! -16802548221 4808699796
-3e98289fd 11e9eef94
Different! 4808699796 11326950702
11e9eef94 2a3238d2e
Different! -7489758132 19002932105
-1be6ca3b4 46ca9bb89
Different! -17564243555 -16210421078
-416e91663 -3c6376556
Different! 3556135645 -197044296
d3f652dd -bbea848
Different! -197044296 -20661633151
-bbea848 -4cf87807f
Different! 3268680760 -9952973037
c2d41c38 -2513e50ed
Different! -18893791577 2333336882
-466286159 8b13e532
Different! 2333336882 1703430530
8b13e532 65884982
Different! 1703430530 -21400618256
65884982 -4fb938510
Different! -8401832982 5881885498
-1f4c9cc16 15e96733a
Different! 6298652829 15815493975
1776dd09d 3aead4957
Different! 15815493975 18758929515
3aead4957 45e1e8c6b
Different! 14260587619 -21059712030
351ff4c63 -4e741b41e
Different! -21059712030 18878974868
-4e741b41e 465464b94
Different! 18878974868 -4196938217
465464b94 -fa2831e9
Different! -4196938217 -17232904956
-fa2831e9 -4032942fc
Different! 13686205178 -21047643079
32fc2eafa -4e6898bc7
Different! -11311262460 -17256589489
-2a2342afc -40492a8b1
Different! -1291817597 -12672145862
-4cff927d -2f35199c6
Different! -12672145862 -6061212601
-2f35199c6 -16946c3b9
Different! -6061212601 12872458905
-16946c3b9 2ff422299
Different! 12872458905 8671345969
2ff422299 204da3d31
Different! -1808940466 -8163914822
-6bd23db2 -1e69b7446
Different! -11020456422 13888655468
-290ded1e6 33bd4106c
Different! 13888655468 3721478285
33bd4106c ddd1408d
Different! 3721478285 -18123871831
ddd1408d -438445657
Different! -18123871831 7541225032
-438445657 1c17df648
Different! 7541225032 2003504560
1c17df648 776b0db0
Different! 2003504560 -20597078269
776b0db0 -4cbae78fd
Different! -20597078269 -14633232339
-4cbae78fd -3683567d3
Different! 18193144280 -20760126605
43c6559d8 -4d566648d
Different! -20760126605 -4433711094
-4d566648d -108450ff6
Different! -4433711094 2951404275
-108450ff6 afeadaf3
Different! -2689235268 -1057973571
-a04a7944 -3f0f6543
Different! 9867389995 -3316972986
24c246c2b -c5b4fdba
Different! -3316972986 -18084912140
-c5b4fdba -435f1dc0c
Different! -18084912140 2506488786
-435f1dc0c 9565fbd2
Different! 2155187912 10589145732
80758ec8 277298a84
Different! 12890903238 -4143755156
3005b92c6 -f6fcaf94
Different! -4143755156 -4660477112
-f6fcaf94 -115c93cb8
Different! 14457312368 -10784019113
35db91470 -282c712a9
Different! -10784019113 -8923934637
-282c712a9 -213e86fad
Different! -8923934637 -4067731501
-213e86fad -f274a82d
Different! 11745377078 -17825101946
2bc143b36 -42675787a
Different! 8628714920 -21354510942
2024fbda8 -4f8d3fa5e
Different! 2947725376 -10334913852
afb2b840 -26802453c
Different! -5618178105 -16703102520
-14ede9839 -3e3951e38
Different! -16703102520 1173043144
-3e3951e38 45eb37c8
Different! 1173043144 -20427421595
45eb37c8 -4c191b79b
Different! 15733820401 13256243099
3a9cf0bf1 31622379b
Different! 14575692361 19525084930
364c76a49 48bc92702
Different! 19525084930 13761885840
48bc92702 33445b690
Different! -14192330979 -15087137893
-34dedc8e3 -383437465
Different! 15341384547 -10016049897
3926af363 -25500cae9
Different! -10016049897 -15888712990
-25500cae9 -3b30a851e
Different! 16750184738 13662605836
3e6638922 32e5ad20c
Different! 13662605836 3440389561
32e5ad20c cd102db9
Different! -16583315636 -9306583165
-3dc7150b4 -22ab7307d
Different! -13233662392 -19485657325
-314c9a9b8 -4896f88ed
Different! -19485657325 -17940084210
-4896f88ed -42d4ff5f2
Different! 826006301 15040975857
313bdb1d 3808313f1
Different! -2809785845 -8941787358
-a779edf5 -214f8d8de
Different! 17318637439 19772960130
408456f7f 49a8f6d82
Different! -19824378607 13911863718
-49da002ef 33d3631a6
Different! 13911863718 11515922698
33d3631a6 2ae67090a
Different! 11515922698 1894374164
2ae67090a 70e9db14
Different! -1337045376 -19443360723
-4fb1b180 -486ea23d3
Different! 7529783568 1206462605
1c0cf6110 47e9288d
Different! 1206462605 -11012111612
47e9288d -2905f7cfc
Different! -11367307134 -8968669495
-2a58b577e -216930937
Different! -8968669495 -6522561656
-216930937 -184c66478
Different! -6522561656 5402317640
-184c66478 14200d348
Different! -19319631267 16491819753
-47f8a2da3 3d6fd32e9
Different! 16491819753 5353269666
3d6fd32e9 13f1469a2
Different! 17332986983 6488638431
409206467 182c0c3df
Different! 6488638431 17778605965
182c0c3df 423afff8d
Different! 17778605965 12435401099
423afff8d 2e535298b
Different! -20697297929 14283907615
-4d1a7b409 35363221f
Different! -1747697513 -16697544376
-682bbf69 -3e3404eb8
Different! -16849344428 244098297
-3ec4c97ac e8ca4f9
Different! 244098297 16734506406
e8ca4f9 3e5744da6
Different! 16734506406 431362289
3e5744da6 19b610f1
Different! 431362289 -6863273948
19b610f1 -199153fdc
Different! -6863273948 -9491773042
-199153fdc -235c0f672
Different! -9491773042 16237144327
-235c0f672 3c7cf2907
Different! -12262429095 -4726949439
-2dae5d1a7 -119bf863f
Different! -14693457456 11190052330
-36bcc5e30 29afaa5ea
Different! -12106319142 13726852913
-2d197c526 3322f2731
Different! -4400515878 -2612997255
-1064a8b26 -9bbf2c87
Different! -2612997255 8942383260
-9bbf2c87 21501f09c
Different! 8942383260 7527173251
21501f09c 1c0a78c83
Different! 7527173251 257094978
1c0a78c83 f52f542
Different! 1370152690 -10757407564
51aadef2 -28131034c
Different! -10757407564 -5672041340
-28131034c -152147b7c
Different! -5672041340 10752406861
-152147b7c 280e4b54d
Different! 19579867889 14793658819
48f0d12f1 371c551c3
Different! 14793658819 7134715139
371c551c3 1a9431d03
Different! 7134715139 14202510422
1a9431d03 34e891c56
Different! -1425975510 6502665434
-54fea8d6 18396ccda
Different! 6502665434 -17263240626
18396ccda -404f825b2
Different! -17263240626 16532510411
-404f825b2 3d96a16cb
Different! -19986161868 -14656476521
-4a744a0cc -369981569
Different! -17619425255 3541872113
-41a3317e7 d31cadf1
Different! 12798562583 14269947784
2fada9117 3528e1f88
Different! 1282653116 2800886119
4c73bbbc a6f22167
Different! 7755013171 -22803560
1ce3c1c33 -15bf468
Different! 18522189578 7187054367
450022f0a 1ac61bf1f
Different! 7187054367 -14535723773
1ac61bf1f -362658afd
Different! -1638760085 -15878787325
-61ad7e95 -3b27310fd
Different! -15878787325 -18936223004
-3b27310fd -468afd51c
Different! -18936223004 7140057235
-468afd51c 1a994a093
Different! 7519356290 -9335743017
1c0304582 -22c742229
Different! -9335743017 -3303601059
-22c742229 -c4e8f3a3
Different! -11902869914 -9342640185
-2c577619a -22cdd6039
Different! -4410412506 3508703753
-106e18dda d1229209
Different! 3508703753 -9299139443
d1229209 -22a459b73
Different! -17265030827 2301449906
-4051376ab 892d56b2
Different! -16370352346 17592764209
-3cfbfc0da 4189c4731
Different! 17592764209 -12153475917
4189c4731 -2d467534d
Different! -12153475917 -13500421012
-2d467534d -324b01394
Different! -13500421012 12292828925
-324b01394 2dcb5aefd
Different! 16187936469 -8709770180
3c4e04ed5 -207248bc4
Different! -8709770180 -2683022676
-207248bc4 -9febad54
Different! -2683022676 -19009241598
-9febad54 -46d0a01fe
Different! -19009241598 -3493101918
-46d0a01fe -d034815e
Different! -3493101918 14549010087
-d034815e 3633046a7
Different! -9507909542 15150345969
-236b72fa6 38707eef1
Different! 16324029402 4611514108
3ccfcebda 112de1efc
Different! 4611514108 11940549681
112de1efc 2c7b65431
Different! 11940549681 17906934702
2c7b65431 42b5623ae
Different! 9881646236 11644303223
24cfdf49c 2b60df777
Different! -20588194813 9946914036
-4cb26ebfd 250e1dcf4
Different! 9946914036 6932932401
250e1dcf4 19d3c2731
Different! 6932932401 13600135401
19d3c2731 32aa198e9
Different! 13600135401 4285368797
32aa198e9 ff6d89dd
Different! 19970326976 14919341258
4a65301c0 3794314ca
Different! -5409576543 -11991481069
-1426f965f -2cabf7aed
Different! -11991481069 -9465125474
-2cabf7aed -2342a5a62
Different! -17496267615 -16928928428
-412dbdb5f -3f10af2ac

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment