Skip to content

Instantly share code, notes, and snippets.

@gskachkov
Created July 29, 2015 21:23
Show Gist options
  • Save gskachkov/1fa1bde66937489f5840 to your computer and use it in GitHub Desktop.
Save gskachkov/1fa1bde66937489f5840 to your computer and use it in GitHub Desktop.
//functionexp-call.js
var fe = function (a, b) { return a + b; };
noInline(fe);
function bar(a, b) {
return fe(a, b);
}
noInline(bar);
for (var i = 0; i < 1000000; ++i) {
var result = bar(1, 2);
if (result != 3)
throw "Error: bad result: " + result;
}
//-----------------------------------------------------------------
//arrowfunction-call.js
var af = (a, b) => a + b;
noInline(af);
function bar(a, b) {
return af(a, b);
}
noInline(bar);
for (var i = 0; i < 1000000; ++i) {
var result = bar(1, 2);
if (result != 3)
throw "Error: bad result: " + result;
}
@gskachkov
Copy link
Author

MacBook-Pro-Skachkov:Webkit2 Developer$ Tools/Scripts/run-jsc-benchmarks Foo:/Users/Developer/Projects/Webkit2/WebKitBuild/af_rebase5/Release/jsc
Warning: could not identify checkout location for Foo
Warning: refusing to run Octane because "OctanePath" isn't set in /Users/Developer/.run-jsc-benchmarks.
Warning: refusing to run Kraken because "KrakenPath" isn't set in /Users/Developer/.run-jsc-benchmarks.
Warning: refusing to run JSBench because not all VMs are DumpRenderTree or WebKitTestRunner.
Warning: refusing to run DSPJS because not all VMs are DumpRenderTree or WebKitTestRunner.
Warning: refusing to run CompressionBench because "CompressionBenchPath" isn't set in /Users/Developer/.run-jsc-benchmarks
1618/1618
Generating benchmark report at /Users/Developer/Projects/Webkit2/Foo_SunSpiderLongSpiderV8SpiderJSRegress_MacBook-Pro-Skachkov_20150730_0018_report.txt
And raw data at /Users/Developer/Projects/Webkit2/Foo_SunSpiderLongSpiderV8SpiderJSRegress_MacBook-Pro-Skachkov_20150730_0018.json

Benchmark report for SunSpider, LongSpider, V8Spider, and JSRegress on MacBook-Pro-Skachkov (MacBookPro8,1).

VMs tested:
"Foo" at /Users/Developer/Projects/Webkit2/WebKitBuild/af_rebase5/Release/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark.
Emitted a call to gc() between sample measurements. Used 1 benchmark iteration
per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95%
confidence intervals in milliseconds.

                                                    Foo              

SunSpider:
3d-cube 9.6283+-2.5001
3d-morph 11.0751+-4.0740
3d-raytrace 12.3043+-3.7906
access-binary-trees 4.0347+-1.2402
access-fannkuch 10.5541+-2.6388
access-nbody 5.0189+-1.5353
access-nsieve 5.4100+-0.6625
bitops-3bit-bits-in-byte 3.3347+-1.0324
bitops-bits-in-byte 5.4489+-0.6438
bitops-bitwise-and 4.0911+-1.3690
bitops-nsieve-bits 5.0477+-0.6140
controlflow-recursive 4.4678+-0.4867
crypto-aes 8.3198+-2.3021
crypto-md5 4.9376+-1.7714
crypto-sha1 4.8286+-0.3880
date-format-tofte 15.5243+-2.5432
date-format-xparb 8.9521+-1.5490
math-cordic 5.5885+-1.1257
math-partial-sums 8.6284+-1.1817
math-spectral-norm 3.9606+-0.4596
regexp-dna 10.1335+-1.7205
string-base64 7.4644+-1.8678
string-fasta 10.2297+-1.1475
string-tagcloud 14.9367+-3.6236
string-unpack-code 30.5570+-1.9409
string-validate-input 8.1019+-1.3772

8.5607+-0.3333

                                                    Foo              

LongSpider:
3d-cube 1269.3828+-225.4860
3d-morph 2092.4095+-49.1617
3d-raytrace 1117.4910+-50.4165
access-binary-trees 1703.9646+-793.2074
access-fannkuch 506.6409+-37.0445
access-nbody 873.8995+-75.6595
access-nsieve 701.0897+-17.3389
bitops-3bit-bits-in-byte 66.4032+-3.6661
bitops-bits-in-byte 133.2261+-36.9162
bitops-nsieve-bits 816.6076+-71.8404
controlflow-recursive 698.7695+-117.9563
crypto-aes 1058.9520+-74.4386
crypto-md5 901.8086+-79.9337
crypto-sha1 1115.8679+-81.9653
date-format-tofte 1103.0013+-124.3115
date-format-xparb 1294.4929+-245.6362
hash-map 269.5145+-21.9076
math-cordic 834.7383+-10.6284
math-partial-sums 809.1913+-31.4708
math-spectral-norm 1234.6685+-69.5594
string-base64 595.9906+-12.7217
string-fasta 686.3373+-119.5027
string-tagcloud 338.5839+-48.9211

707.6643+-25.2732

                                                    Foo              

V8Spider:
crypto 126.0796+-28.8583
deltablue 196.6160+-42.9415
earley-boyer 81.6165+-4.7863
raytrace 70.5833+-2.8713
regexp 118.1564+-10.1991
richards 155.9354+-26.6782
splay 75.2143+-7.2727

109.9903+-7.7598

                                                    Foo              

JSRegress:
abc-forward-loop-equal 61.8320+-3.4291
abc-postfix-backward-loop 69.3220+-12.9166
abc-simple-backward-loop 68.4948+-11.3952
abc-simple-forward-loop 60.2043+-1.2588
abc-skippy-loop 46.4777+-14.5733
abs-boolean 5.2514+-1.4661
adapt-to-double-divide 21.0603+-0.4410
aliased-arguments-getbyval 2.2335+-0.5749
allocate-big-object 3.9520+-0.5748
arguments-named-and-reflective 15.4813+-1.5430
arguments-out-of-bounds 21.1792+-5.8426
arguments-strict-mode 15.0638+-2.9426
arguments 12.1520+-1.1433
arity-mismatch-inlining 1.5248+-0.1513
array-access-polymorphic-structure 10.2892+-3.0838
array-nonarray-polymorhpic-access 49.8069+-6.1687
array-prototype-every 138.0643+-32.2656
array-prototype-forEach 125.9320+-8.2057
array-prototype-map 137.3005+-19.9773
array-prototype-reduce 136.2640+-50.1292
array-prototype-reduceRight 120.4317+-24.5100
array-prototype-some 120.8853+-4.6652
array-splice-contiguous 38.7844+-7.3259
array-with-double-add 7.0825+-1.8659
array-with-double-increment 5.9202+-0.6204
array-with-double-mul-add 9.1482+-0.6240
array-with-double-sum 4.9645+-0.5223
array-with-int32-add-sub 13.1105+-4.8879
array-with-int32-or-double-sum 6.0770+-1.4572
ArrayBuffer-DataView-alloc-large-long-lived
50.7558+-4.6262
ArrayBuffer-DataView-alloc-long-lived 18.7328+-0.9064
ArrayBuffer-Int32Array-byteOffset 5.8435+-0.3407
ArrayBuffer-Int8Array-alloc-large-long-lived
46.3383+-2.9679
ArrayBuffer-Int8Array-alloc-long-lived-buffer
36.5856+-4.9293
ArrayBuffer-Int8Array-alloc-long-lived 20.4897+-5.0472
ArrayBuffer-Int8Array-alloc 15.0690+-0.3420
arrowfunction-call 26.0409+-2.0162
asmjs_bool_bug 11.5439+-1.7154
assign-custom-setter-polymorphic 4.6608+-1.6082
assign-custom-setter 6.3071+-1.6818
basic-set 16.0649+-2.3414
big-int-mul 8.7418+-2.3264
boolean-test 4.6964+-0.3840
branch-fold 6.7280+-0.7066
branch-on-string-as-boolean 29.8527+-3.9512
by-val-generic 12.7363+-2.4852
call-spread-apply 52.4865+-6.8269
call-spread-call 42.0002+-5.4792
captured-assignments 0.6954+-0.0256
cast-int-to-double 8.4796+-0.9041
cell-argument 11.4353+-0.2919
cfg-simplify 4.4107+-0.2341
chain-getter-access 14.9669+-4.8086
cmpeq-obj-to-obj-other 18.6771+-4.1081
constant-test 7.9778+-0.7989
create-lots-of-functions 16.8775+-2.8835
cse-new-array-buffer 4.5039+-0.3662
cse-new-array 4.6967+-0.0699
DataView-custom-properties 55.4797+-5.8329
delay-tear-off-arguments-strictmode 20.9041+-3.3388
deltablue-varargs 348.4585+-29.0862
destructuring-arguments 262.6577+-18.7568
destructuring-parameters-overridden-by-function
0.9934+-0.3592
destructuring-swap 8.1905+-0.2721
direct-arguments-getbyval 2.0736+-0.5025
div-boolean-double 7.3700+-0.5078
div-boolean 10.8965+-0.7165
double-get-by-val-out-of-bounds 8.5478+-0.8163
double-pollution-getbyval 12.1454+-1.0854
double-pollution-putbyoffset 9.4717+-0.6802
double-real-use 40.5055+-5.5642
double-to-int32-typed-array-no-inline 4.1879+-0.4248
double-to-int32-typed-array 4.3015+-1.2283
double-to-uint32-typed-array-no-inline 5.0247+-1.1382
double-to-uint32-typed-array 4.2411+-0.5833
elidable-new-object-dag 56.8358+-3.0686
elidable-new-object-roflcopter 57.8384+-6.5094
elidable-new-object-then-call 53.4713+-8.2380
elidable-new-object-tree 65.6568+-12.4654
empty-string-plus-int 8.9636+-1.0847
emscripten-cube2hash 67.9688+-16.0372
exit-length-on-plain-object 27.2809+-15.9907
external-arguments-getbyval 2.9301+-2.1290
external-arguments-putbyval 4.4348+-0.6457
fixed-typed-array-storage-var-index 2.3347+-0.5916
fixed-typed-array-storage 1.9942+-1.0364
Float32Array-matrix-mult 7.1108+-2.4356
Float32Array-to-Float64Array-set 75.1927+-7.0018
Float64Array-alloc-long-lived 103.8620+-5.0537
Float64Array-to-Int16Array-set 101.4389+-24.6578
fold-double-to-int 22.2565+-3.0027
fold-get-by-id-to-multi-get-by-offset-rare-int
17.3942+-3.6321
fold-get-by-id-to-multi-get-by-offset 20.4122+-14.2212
fold-multi-get-by-offset-to-get-by-offset
15.6149+-4.8431
fold-multi-get-by-offset-to-poly-get-by-offset
15.4885+-4.1572
fold-multi-put-by-offset-to-poly-put-by-offset
15.7043+-6.1847
fold-multi-put-by-offset-to-put-by-offset
13.2110+-2.2887
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
18.5839+-4.1069
fold-put-by-id-to-multi-put-by-offset 14.9375+-3.3004
fold-put-structure 13.3582+-4.0812
for-of-iterate-array-entries 19.4957+-3.7568
for-of-iterate-array-keys 6.0485+-0.6225
for-of-iterate-array-values 6.3740+-0.7001
fround 25.8267+-1.1533
ftl-library-inlining-dataview 101.7450+-18.4023
ftl-library-inlining 151.4691+-7.5976
function-dot-apply 4.1788+-0.2408
function-test 4.7551+-0.3683
function-with-eval 161.5950+-6.7408
functionexp-call 16.3617+-1.6402
gcse-poly-get-less-obvious 27.1158+-4.1993
gcse-poly-get 32.9068+-6.5396
gcse 8.9844+-1.9849
get-by-id-bimorphic-check-structure-elimination-simple
5.1402+-0.5192
get-by-id-bimorphic-check-structure-elimination
11.7153+-3.4751
get-by-id-chain-from-try-block 7.8067+-1.2749
get-by-id-check-structure-elimination 10.0078+-3.5350
get-by-id-proto-or-self 33.4741+-9.8621
get-by-id-quadmorphic-check-structure-elimination-simple
5.0653+-0.9214
get-by-id-self-or-proto 24.9667+-2.3850
get-by-val-out-of-bounds 7.6075+-1.8111
get_callee_monomorphic 5.2850+-3.4676
get_callee_polymorphic 5.1957+-0.9351
getter-no-activation 10.7772+-4.5406
getter-prototype 19.4183+-0.7151
getter-richards 303.1722+-53.4227
getter 11.0328+-0.8790
global-var-const-infer-fire-from-opt 1.2401+-0.0332
global-var-const-infer 1.3279+-0.4242
HashMap-put-get-iterate-keys 55.8398+-2.7387
HashMap-put-get-iterate 59.6057+-12.9440
HashMap-string-put-get-iterate 49.9093+-6.3424
hoist-make-rope 15.6190+-4.2466
hoist-poly-check-structure-effectful-loop
9.2634+-1.8562
hoist-poly-check-structure 7.3824+-2.0889
imul-double-only 12.2127+-2.5611
imul-int-only 13.5482+-2.1070
imul-mixed 10.9067+-2.2149
in-four-cases 33.8587+-4.8174
in-one-case-false 21.4302+-1.2573
in-one-case-true 20.7401+-5.3578
in-two-cases 21.1695+-4.8218
indexed-properties-in-objects 5.4407+-0.9966
infer-closure-const-then-mov-no-inline 7.3182+-1.2883
infer-closure-const-then-mov 28.0895+-6.0004
infer-closure-const-then-put-to-scope-no-inline
17.6578+-2.7485
infer-closure-const-then-put-to-scope 31.6532+-2.4638
infer-closure-const-then-reenter-no-inline
85.1495+-24.9665
infer-closure-const-then-reenter 32.6525+-3.5982
infer-constant-global-property 5.3099+-0.5841
infer-constant-property 4.5876+-0.5398
infer-one-time-closure-ten-vars 15.9629+-1.4013
infer-one-time-closure-two-vars 16.7459+-3.8313
infer-one-time-closure 15.6241+-1.3290
infer-one-time-deep-closure 30.6389+-2.1153
inline-arguments-access 6.7595+-0.7299
inline-arguments-aliased-access 6.7748+-1.1867
inline-arguments-local-escape 7.2158+-0.6750
inline-get-scoped-var 7.7884+-0.2830
inlined-put-by-id-transition 18.5494+-3.9622
int-or-other-abs-then-get-by-val 8.6448+-1.6614
int-or-other-abs-zero-then-get-by-val 30.5505+-10.0345
int-or-other-add-then-get-by-val 8.5350+-1.0726
int-or-other-add 8.4455+-0.8500
int-or-other-div-then-get-by-val 6.9384+-1.7086
int-or-other-max-then-get-by-val 8.1411+-1.9762
int-or-other-min-then-get-by-val 8.5170+-1.4635
int-or-other-mod-then-get-by-val 8.0107+-2.4527
int-or-other-mul-then-get-by-val 7.7423+-0.5892
int-or-other-neg-then-get-by-val 9.0502+-2.0174
int-or-other-neg-zero-then-get-by-val 25.0020+-3.0241
int-or-other-sub-then-get-by-val 9.8430+-0.9469
int-or-other-sub 6.8323+-0.2585
int-overflow-local 8.8412+-1.5235
Int16Array-alloc-long-lived 82.8831+-28.8116
Int16Array-bubble-sort-with-byteLength 32.3539+-4.7138
Int16Array-bubble-sort 31.7182+-2.7990
Int16Array-load-int-mul 3.4680+-2.8415
Int16Array-to-Int32Array-set 70.6987+-3.7374
Int32Array-alloc-large 29.7400+-2.1218
Int32Array-alloc-long-lived 83.7324+-3.0979
Int32Array-alloc 5.6435+-2.0138
Int32Array-Int8Array-view-alloc 10.1025+-1.4380
int52-spill 10.6235+-1.6902
Int8Array-alloc-long-lived 69.9189+-9.3793
Int8Array-load-with-byteLength 5.7931+-1.2289
Int8Array-load 5.8510+-1.5951
integer-divide 16.6854+-3.1425
integer-modulo 3.9655+-1.4649
is-boolean-fold-tricky 8.1385+-2.1357
is-boolean-fold 4.7073+-0.4800
is-function-fold-tricky-internal-function
21.2440+-6.7286
is-function-fold-tricky 8.1598+-2.8625
is-function-fold 5.0543+-0.7654
is-number-fold-tricky 6.1194+-0.1487
is-number-fold 4.6035+-0.2749
is-object-or-null-fold-functions 4.8680+-0.4272
is-object-or-null-fold-less-tricky 7.8763+-3.4299
is-object-or-null-fold-tricky 10.8466+-1.2513
is-object-or-null-fold 4.7570+-0.5192
is-object-or-null-trickier-function 6.9584+-1.5715
is-object-or-null-trickier-internal-function
21.1120+-5.6730
is-object-or-null-tricky-function 8.0930+-3.7335
is-object-or-null-tricky-internal-function
16.0674+-3.9856
is-string-fold-tricky 6.9462+-1.7729
is-string-fold 4.8407+-0.6141
is-undefined-fold-tricky 7.0328+-1.1493
is-undefined-fold 6.2568+-4.2577
large-int-captured 7.0128+-1.5272
large-int-neg 22.5724+-1.6386
large-int 22.9382+-2.0050
load-varargs-elimination 34.9505+-4.7165
logical-not-weird-types 5.8237+-1.1962
logical-not 9.3873+-5.8499
lots-of-fields 21.1055+-3.0161
make-indexed-storage 4.4858+-0.8065
make-rope-cse 6.5198+-1.0782
marsaglia-larger-ints 64.0157+-10.1556
marsaglia-osr-entry 33.6989+-5.8767
math-with-out-of-bounds-array-values 39.9474+-5.0429
max-boolean 4.4734+-0.8307
method-on-number 28.0556+-5.4950
min-boolean 4.4069+-0.7755
minus-boolean-double 5.0217+-1.4163
minus-boolean 4.4247+-1.5820
misc-strict-eq 52.7911+-4.7204
mod-boolean-double 15.5101+-0.7428
mod-boolean 11.3604+-0.5981
mul-boolean-double 5.0893+-0.2085
mul-boolean 4.3243+-0.6514
neg-boolean 4.9839+-1.1020
negative-zero-divide 0.6402+-0.1620
negative-zero-modulo 0.5931+-0.1420
negative-zero-negate 0.5229+-0.0559
nested-function-parsing 73.9360+-6.0274
new-array-buffer-dead 151.7306+-6.1104
new-array-buffer-push 10.6582+-2.1310
new-array-dead 22.5325+-6.3142
new-array-push 10.5674+-2.2721
no-inline-constructor 58.8570+-13.7956
number-test 4.5995+-0.3181
object-closure-call 10.0181+-1.2524
object-get-own-property-symbols-on-large-array
5.6916+-0.4906
object-test 5.5078+-1.4943
obvious-sink-pathology-taken 185.5477+-19.4593
obvious-sink-pathology 160.4572+-7.6058
obviously-elidable-new-object 44.1771+-5.4062
plus-boolean-arith 4.0243+-0.4026
plus-boolean-double 4.7835+-0.4991
plus-boolean 4.3088+-0.2594
poly-chain-access-different-prototypes-simple
5.4926+-1.6117
poly-chain-access-different-prototypes 4.9752+-1.0143
poly-chain-access-simpler 5.7400+-0.7820
poly-chain-access 4.3249+-0.6871
poly-stricteq 96.2850+-10.9444
polymorphic-array-call 2.1649+-0.0765
polymorphic-get-by-id 5.8458+-1.9387
polymorphic-put-by-id 50.3508+-10.1853
polymorphic-structure 26.7487+-3.6946
polyvariant-monomorphic-get-by-id 15.6093+-1.5466
proto-getter-access 12.9398+-1.2545
put-by-id-replace-and-transition 14.5885+-1.3484
put-by-id-slightly-polymorphic 8.1241+-0.5621
put-by-id 20.0065+-3.4988
put-by-val-direct 0.6927+-0.3796
put-by-val-large-index-blank-indexing-type
8.7198+-1.0888
put-by-val-machine-int 6.8353+-2.8503
rare-osr-exit-on-local 25.0920+-3.0756
register-pressure-from-osr 33.7905+-7.3329
repeat-multi-get-by-offset 36.3445+-6.1928
setter-prototype 15.1720+-3.5220
setter 13.0919+-2.4971
simple-activation-demo 37.4666+-5.4774
simple-getter-access 17.6668+-3.0215
simple-poly-call-nested 13.5529+-1.8998
simple-poly-call 2.5782+-1.0809
sin-boolean 24.2493+-2.0515
singleton-scope 99.1420+-13.0962
sink-function 15.3749+-2.4455
sink-huge-activation 24.9390+-2.7023
sinkable-new-object-dag 102.9526+-12.3686
sinkable-new-object-taken 72.6260+-3.8099
sinkable-new-object 52.1490+-4.9805
slow-array-profile-convergence 4.4340+-0.5663
slow-convergence 4.5087+-1.9936
slow-ternaries 35.4055+-5.9035
sorting-benchmark 29.6965+-3.3571
sparse-conditional 2.2099+-0.3529
splice-to-remove 23.2132+-3.0611
string-char-code-at 24.8922+-3.0046
string-concat-object 3.9015+-0.4800
string-concat-pair-object 3.5329+-0.4184
string-concat-pair-simple 18.1333+-2.1706
string-concat-simple 20.6609+-1.0003
string-cons-repeat 12.1530+-1.6755
string-cons-tower 11.0823+-1.6056
string-equality 30.8323+-5.1923
string-get-by-val-big-char 12.8528+-2.9839
string-get-by-val-out-of-bounds-insane 6.3844+-3.0214
string-get-by-val-out-of-bounds 8.5601+-4.6956
string-get-by-val 6.8212+-2.2269
string-hash 4.2124+-0.7511
string-long-ident-equality 21.9643+-3.2017
string-out-of-bounds 20.8376+-2.8641
string-repeat-arith 63.2332+-19.2849
string-sub 107.7266+-48.9391
string-test 5.3408+-1.2809
string-var-equality 51.2107+-12.8641
structure-hoist-over-transitions 5.1477+-1.5970
substring-concat-weird 68.4886+-12.0641
substring-concat 70.6868+-10.3727
substring 76.0914+-9.6983
switch-char-constant 4.6130+-0.8359
switch-char 12.1641+-2.6335
switch-constant 16.7062+-0.9759
switch-string-basic-big-var 28.5191+-4.5241
switch-string-basic-big 33.9380+-7.4845
switch-string-basic-var 23.2426+-3.6761
switch-string-basic 24.7621+-6.5399
switch-string-big-length-tower-var 30.6607+-1.9042
switch-string-length-tower-var 28.0618+-9.1070
switch-string-length-tower 22.2610+-4.3594
switch-string-short 19.0350+-1.3882
switch 21.4167+-2.3241
tear-off-arguments-simple 6.3705+-2.2816
tear-off-arguments 7.4537+-0.8323
temporal-structure 23.4169+-3.6183
to-int32-boolean 23.9612+-4.7758
try-catch-get-by-val-cloned-arguments 20.8444+-0.7857
try-catch-get-by-val-direct-arguments 11.7598+-3.5217
try-catch-get-by-val-scoped-arguments 11.4318+-1.2105
typed-array-get-set-by-val-profiling 40.2800+-1.5022
undefined-property-access 542.4858+-55.7325
undefined-test 4.7672+-0.1354
unprofiled-licm 32.1827+-8.2304
varargs-call 22.1553+-4.7750
varargs-construct-inline 37.3991+-1.5293
varargs-construct 36.1080+-6.6066
varargs-inline 13.6000+-2.2006
varargs-strict-mode 16.2084+-4.2208
varargs 16.8607+-2.3224
weird-inlining-const-prop 7.3751+-6.4049

14.3648+-0.2166

                                                    Foo              

Geomean of preferred means:
55.6089+-1.1000

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