[webkit-reviews] review requested: [Bug 86553] JSGlobalData ScratchBuffers Are Not Visited During Garbage Collection : [Attachment 142849] Updated patch wit JIT code keeping track of active scratch buffers
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri May 18 21:58:29 PDT 2012
Michael Saboff <msaboff at apple.com> has asked for review:
Bug 86553: JSGlobalData ScratchBuffers Are Not Visited During Garbage
Collection
https://bugs.webkit.org/show_bug.cgi?id=86553
Attachment 142849: Updated patch wit JIT code keeping track of active scratch
buffers
https://bugs.webkit.org/attachment.cgi?id=142849&action=review
------- Additional Comments from Michael Saboff <msaboff at apple.com>
Updated the patch to eliminate the large regression.
The JIT'ed code now writes out the active scratch size before calling out to
C++ code and then clears after the scratch buffer is done being used.
Below are the updated performance results. The only tests that shows any kind
of slowdown is V8Real-richards at 1.8% and JSRegress string-test at 1.2% and
undefined-test at 1%.
Benchmark report for SunSpider, V8, V8Real, Kraken, JSBench, JSRegress, and DSP
on msaboff-pro (MacPro5,1).
VMs tested:
"BaseLine" at
/Volumes/Data/src/webkit.baseline/WebKitBuild/Release/DumpRenderTree (r117391)
"VisitScratchBuffers" at
/Volumes/Data/src/webkit/WebKitBuild/Release/DumpRenderTree (r117391)
Collected 24 samples per benchmark/VM, with 4 VM invocations per benchmark. No
manual garbage collection invocations were
emitted. 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.
BaseLine
VisitScratchBuffers
SunSpider:
3d-cube 7.6129+-0.0933 ?
7.6663+-0.0854 ?
3d-morph 7.4009+-0.0485
7.3647+-0.0634
3d-raytrace 9.9724+-0.2799 ?
10.0044+-0.2792 ?
access-binary-trees 1.8306+-0.0218
1.8300+-0.0139
access-fannkuch 7.5732+-0.0296 ?
7.5741+-0.0188 ?
access-nbody 3.9349+-0.0397 ?
3.9701+-0.0474 ?
access-nsieve 3.6768+-0.0277
3.6712+-0.0311
bitops-3bit-bits-in-byte 1.4424+-0.0165
1.4295+-0.0111
bitops-bits-in-byte 5.5075+-0.0504 ?
5.5182+-0.0306 ?
bitops-bitwise-and 3.4327+-0.0082 ?
3.4491+-0.0210 ?
bitops-nsieve-bits 3.3273+-0.0090 ?
3.3510+-0.0241 ?
controlflow-recursive 2.4683+-0.0155
2.4647+-0.0142
crypto-aes 7.9243+-0.1127
7.9035+-0.0971
crypto-md5 3.4875+-0.0452 ?
3.4883+-0.0473 ?
crypto-sha1 2.8354+-0.0325
2.8082+-0.0302
date-format-tofte 13.1882+-0.8200 ?
13.3276+-0.8214 ? might be 1.0106x slower
date-format-xparb 10.9723+-0.5200 ?
11.2165+-0.5118 ? might be 1.0223x slower
math-cordic 4.3376+-0.0520
4.3276+-0.0502
math-partial-sums 9.1740+-0.0313 ?
9.2795+-0.0910 ? might be 1.0115x slower
math-spectral-norm 2.9616+-0.0325 ?
2.9657+-0.0319 ?
regexp-dna 9.8527+-0.0953 ?
9.8968+-0.0972 ?
string-base64 4.8435+-0.0392 ?
4.9458+-0.2122 ? might be 1.0211x slower
string-fasta 7.8418+-0.2518
7.8418+-0.2455
string-tagcloud 13.3686+-0.2192
13.2846+-0.2230
string-unpack-code 22.7043+-0.5997 ?
22.7916+-0.6311 ?
string-validate-input 8.5788+-0.5542 ?
8.6677+-0.5762 ? might be 1.0104x slower
<arithmetic> * 6.9327+-0.0485 ?
6.9630+-0.0495 ? might be 1.0044x slower
<geometric> 5.6237+-0.0257 ?
5.6402+-0.0250 ? might be 1.0029x slower
<harmonic> 4.5358+-0.0197 ?
4.5390+-0.0182 ? might be 1.0007x slower
BaseLine
VisitScratchBuffers
V8:
crypto 75.6202+-0.4168 ?
75.6938+-0.4005 ?
deltablue 157.6811+-1.3157 ?
157.9404+-1.6757 ?
earley-boyer 93.4031+-0.2822 ?
93.4446+-0.2714 ?
raytrace 55.7306+-0.9583 ?
55.9167+-1.1695 ?
regexp 93.8529+-0.3721 ^
93.0471+-0.2650 ^ definitely 1.0087x faster
richards 142.9939+-1.9374 ?
143.9461+-2.3855 ?
splay 115.5968+-11.9257
110.2246+-12.3616 might be 1.0487x faster
<arithmetic> 104.9827+-1.6401
104.3162+-1.6959 might be 1.0064x faster
<geometric> * 99.0779+-1.3428
98.4330+-1.3742 might be 1.0066x faster
<harmonic> 93.3028+-0.9826
92.7727+-1.0176 might be 1.0057x faster
BaseLine
VisitScratchBuffers
V8Real:
encrypt 0.42564+-0.00038 !
0.42761+-0.00063 ! definitely 1.0046x slower
decrypt 7.42067+-0.01653 ?
7.44325+-0.01692 ?
deltablue x2 0.94420+-0.00600
0.94255+-0.00499
earley 3.16078+-0.03656
3.13649+-0.03207
boyer 15.72871+-0.05014 ?
15.77503+-0.04728 ?
raytrace x2 6.94780+-0.05752
6.89380+-0.06171
regexp x2 26.95430+-0.04281 ?
27.00633+-0.08617 ?
richards x2 0.37960+-0.00234 !
0.38654+-0.00326 ! definitely 1.0183x slower
splay x2 0.95467+-0.01488
0.93567+-0.01685 might be 1.0203x faster
<arithmetic> 7.07835+-0.01316 ?
7.07944+-0.01412 ? might be 1.0002x slower
<geometric> * 2.59949+-0.00684
2.59637+-0.00808 might be 1.0012x faster
<harmonic> 1.10135+-0.00424 ?
1.10605+-0.00511 ? might be 1.0043x slower
BaseLine
VisitScratchBuffers
Kraken:
ai-astar 814.209+-7.905
812.194+-8.275
audio-beat-detection 204.129+-1.316 ?
204.146+-1.351 ?
audio-dft 291.572+-0.967
290.128+-2.574
audio-fft 120.070+-0.146 ?
120.132+-0.196 ?
audio-oscillator 322.365+-0.300 !
325.176+-1.396 ! definitely 1.0087x slower
imaging-darkroom 304.594+-1.003
304.585+-1.207
imaging-desaturate 219.444+-0.127 ?
219.604+-0.156 ?
imaging-gaussian-blur 457.373+-0.472 ?
457.991+-0.488 ?
json-parse-financial 66.846+-0.273 ^
66.418+-0.143 ^ definitely 1.0064x faster
json-stringify-tinderbox 84.163+-0.164 !
84.717+-0.190 ! definitely 1.0066x slower
stanford-crypto-aes 89.333+-0.994 ^
88.113+-0.222 ^ definitely 1.0138x faster
stanford-crypto-ccm 94.998+-0.292
94.973+-0.240
stanford-crypto-pbkdf2 193.628+-0.655 ?
194.207+-0.939 ?
stanford-crypto-sha256-iterative 94.502+-0.175 ?
94.640+-0.163 ?
<arithmetic> * 239.802+-0.608
239.787+-0.577 might be 1.0001x faster
<geometric> 183.758+-0.217
183.686+-0.169 might be 1.0004x faster
<harmonic> 146.853+-0.210
146.664+-0.096 might be 1.0013x faster
BaseLine
VisitScratchBuffers
JSBench:
amazon 17.8333+-0.2033 ?
18.0000+-0.2490 ?
facebook 69.8750+-2.1253 ?
71.0833+-2.6028 ? might be 1.0173x slower
google 98.5000+-2.2926
97.2917+-2.3411 might be 1.0124x faster
twitter 52.1250+-0.2266
51.8333+-0.2690
yahoo 22.4583+-0.2149
22.2917+-0.1961
<arithmetic> * 52.1583+-0.5224
52.1000+-0.5728 might be 1.0011x faster
<geometric> 42.7707+-0.2901
42.7705+-0.3350 might be 1.0000x faster
<harmonic> 34.6295+-0.1954 ?
34.6683+-0.2322 ? might be 1.0011x slower
BaseLine
VisitScratchBuffers
JSRegress:
adapt-to-double-divide 72.6620+-0.0852 ?
72.7051+-0.1321 ?
aliased-arguments-getbyval 3.6815+-0.1802
3.6746+-0.1908
arity-mismatch-inlining 1.3168+-0.0312
1.2890+-0.0094 might be 1.0215x faster
big-int-mul 28.5101+-0.3113
28.4635+-0.1875
boolean-test 3.9266+-0.0074 ?
3.9326+-0.0151 ?
cast-int-to-double 14.1526+-0.0168 ?
14.1607+-0.0213 ?
cfg-simplify 6.5957+-0.0205 ?
6.6029+-0.0167 ?
cmpeq-obj-to-obj-other 13.9139+-0.4605 ?
14.0145+-0.4557 ?
constant-test 27.1168+-0.0414 ?
27.2107+-0.0838 ?
direct-arguments-getbyval 0.7011+-0.0105 ?
0.7019+-0.0123 ?
double-pollution-getbyval 8.7756+-0.0274 ?
8.7777+-0.0186 ?
double-pollution-putbyoffset 4.6870+-0.0354
4.6648+-0.0408
external-arguments-getbyval 4.2952+-0.1919
4.2653+-0.1955
external-arguments-putbyval 7.0715+-0.3312 ?
7.0967+-0.3327 ?
Float32Array-matrix-mult 11.3192+-0.5077 ?
11.5432+-0.5367 ? might be 1.0198x slower
fold-double-to-int 34.2063+-0.5895
33.8435+-0.2564 might be 1.0107x faster
function-test 4.6158+-0.0286
4.5848+-0.0172
inline-arguments-access 3.6107+-0.0225 ?
3.6116+-0.0190 ?
inline-arguments-local-escape 39.4209+-1.4598 ?
40.0287+-1.4872 ? might be 1.0154x slower
int-overflow-local 102.6761+-0.1919 ?
102.6830+-0.1260 ?
Int16Array-bubble-sort 69.0327+-0.6773
68.6075+-0.9430
Int16Array-load-int-mul 15.8174+-0.0875 ?
15.8965+-0.1237 ?
Int8Array-load 4.7640+-0.0325
4.7464+-0.0637
integer-divide 15.0545+-0.3723
14.8291+-0.0315 might be 1.0152x faster
method-on-number 187.5714+-1.4717 ?
191.3869+-2.8458 ? might be 1.0203x slower
number-test 3.9351+-0.0177 ?
3.9598+-0.0108 ?
object-test 4.2206+-0.0152
4.1962+-0.0182
poly-stricteq 91.0462+-0.4125 ?
91.1090+-0.4208 ?
rare-osr-exit-on-local 150.9123+-0.1566
150.6968+-0.0943
simple-activation-demo 55.2887+-0.3349
55.2096+-0.1918
slow-convergence 90.2112+-0.3039
90.1522+-0.3118
string-hash 14.5765+-0.2147 ?
14.7791+-0.9469 ? might be 1.0139x slower
string-test 3.7378+-0.0119 !
3.7830+-0.0133 ! definitely 1.0121x slower
tear-off-arguments 3.8165+-0.1831
3.8063+-0.1918
to-int32-boolean 29.3838+-0.2678
29.0918+-0.0978 might be 1.0100x faster
undefined-test 4.2109+-0.0201 !
4.2541+-0.0155 ! definitely 1.0102x slower
<arithmetic> 31.5788+-0.0842 ?
31.6766+-0.1305 ? might be 1.0031x slower
<geometric> * 13.0148+-0.0891 ?
13.0203+-0.0916 ? might be 1.0004x slower
<harmonic> 5.7876+-0.0518
5.7763+-0.0484 might be 1.0020x faster
BaseLine
VisitScratchBuffers
DSP:
filtrr-posterize-tint 49.0644+-0.3898 ?
49.1086+-0.4294 ?
filtrr-tint-contrast-sat-bright 81.3190+-0.6132 ?
81.5211+-0.5791 ?
filtrr-tint-sat-adj-contr-mult 93.7695+-0.7597
93.6671+-0.6576
filtrr-blur-overlay-sat-contr 231.7627+-0.7890 ?
232.0110+-0.8206 ?
filtrr-sat-blur-mult-sharpen-contr 288.6334+-1.8254
288.5511+-1.6429
filtrr-sepia-bias 33.4302+-0.3968 ?
33.5880+-0.4207 ?
route9-vp8 x5 1587.7897+-7.5654 ?
1589.0287+-6.5103 ?
<arithmetic> 792.4480+-3.3264 ?
793.0537+-2.9408 ? might be 1.0008x slower
<geometric> * 345.7214+-0.6517 ?
346.0915+-0.6747 ? might be 1.0011x slower
<harmonic> 130.6126+-0.4003 ?
130.8947+-0.4082 ? might be 1.0022x slower
BaseLine
VisitScratchBuffers
All benchmarks:
<arithmetic> 128.1947+-0.3152 ?
128.2463+-0.3003 ? might be 1.0004x slower
<geometric> 20.0661+-0.0589 ?
20.0724+-0.0659 ? might be 1.0003x slower
<harmonic> 4.5082+-0.0165 ?
4.5165+-0.0190 ? might be 1.0018x slower
BaseLine
VisitScratchBuffers
Geomean of preferred means:
<scaled-result> 37.2970+-0.1094
37.2804+-0.1215 might be 1.0004x faster
More information about the webkit-reviews
mailing list