[webkit-reviews] review requested: [Bug 86024] Enh: Hash Const JSString in Backing Stores to Save Memory : [Attachment 150492] Updated patch with changes suggested by reviewer
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Jul 2 16:00:36 PDT 2012
Michael Saboff <msaboff at apple.com> has asked for review:
Bug 86024: Enh: Hash Const JSString in Backing Stores to Save Memory
https://bugs.webkit.org/show_bug.cgi?id=86024
Attachment 150492: Updated patch with changes suggested by reviewer
https://bugs.webkit.org/attachment.cgi?id=150492&action=review
------- Additional Comments from Michael Saboff <msaboff at apple.com>
These changes eliminate any question of performance regression, especially on
v8-splay. The GC benchmark was of marginal use as the numbers seem to worsen
over time. I compared before and after numbers after 30 seconds from when the
benchmark page loaded to show that the patch is very similar to the baseline.
Benchmark report for SunSpider, V8, V8Real, Kraken, JSBench, JSRegress, and DSP
on msaboff-pro (MacPro5,1).
VMs tested:
"Base" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/DumpRenderTree
(r121689)
"HashConst" at /Volumes/Data/src/webkit.work/WebKitBuild/Release/DumpRenderTree
(r121689)
Collected 12 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.
Base
HashConst
SunSpider:
3d-cube 8.0544+-0.4843 ?
8.3723+-0.5080 ? might be 1.0395x slower
3d-morph 7.7863+-0.1308 ?
7.7893+-0.1079 ?
3d-raytrace 11.9975+-0.4714
11.9100+-0.5007
access-binary-trees 2.3276+-0.4307
2.3102+-0.4476
access-fannkuch 6.8067+-0.0173 ?
6.8502+-0.0684 ?
access-nbody 4.2047+-0.0456
4.2043+-0.0487
access-nsieve 3.3556+-0.0625
3.2679+-0.0484 might be 1.0268x faster
bitops-3bit-bits-in-byte 1.3841+-0.0150 ?
1.3927+-0.0187 ?
bitops-bits-in-byte 5.8172+-0.0789
5.7890+-0.0753
bitops-bitwise-and 2.2743+-0.0150
2.2694+-0.0208
bitops-nsieve-bits 3.4734+-0.0399
3.4345+-0.0146 might be 1.0113x faster
controlflow-recursive 2.5510+-0.0552
2.4986+-0.0183 might be 1.0210x faster
crypto-aes 9.3500+-0.5134
9.3166+-0.5694
crypto-md5 3.5942+-0.1247
3.5358+-0.1064 might be 1.0165x faster
crypto-sha1 3.0049+-0.0210 ?
3.0059+-0.0359 ?
date-format-tofte 13.4962+-0.9437 ?
13.7100+-1.0121 ? might be 1.0158x slower
date-format-xparb 11.8243+-0.6616 ?
12.1386+-0.7611 ? might be 1.0266x slower
math-cordic 4.5366+-0.1117
4.5309+-0.0218
math-partial-sums 10.0159+-0.0891 ?
10.0468+-0.0861 ?
math-spectral-norm 3.0866+-0.0181 ?
3.1119+-0.0697 ?
regexp-dna 10.5978+-0.3863
10.5248+-0.3782
string-base64 5.5663+-0.5029
5.4636+-0.4370 might be 1.0188x faster
string-fasta 7.9419+-0.2639
7.9352+-0.2706
string-tagcloud 13.7991+-0.2104 ?
13.8195+-0.2604 ?
string-unpack-code 23.5503+-0.5986
22.9889+-0.4340 might be 1.0244x faster
string-validate-input 8.7396+-0.5395
8.5304+-0.6068 might be 1.0245x faster
<arithmetic> * 7.2745+-0.1588
7.2595+-0.1732 might be 1.0021x faster
<geometric> 5.8200+-0.1240
5.8038+-0.1309 might be 1.0028x faster
<harmonic> 4.6040+-0.0944
4.5845+-0.0965 might be 1.0042x faster
Base
HashConst
V8:
crypto 75.3963+-0.4597
75.1714+-0.6040
deltablue 138.4143+-0.5702 ?
139.5984+-1.4878 ?
earley-boyer 89.3543+-1.6485 ?
89.5104+-1.3849 ?
raytrace 60.1360+-1.7843 ?
62.0452+-2.8892 ? might be 1.0317x slower
regexp 88.1610+-0.4656
87.9296+-0.3581
richards 127.5962+-0.6307 ?
128.5957+-2.0536 ?
splay 107.2903+-14.2292
104.4436+-13.9688 might be 1.0273x faster
<arithmetic> 98.0498+-1.9328 ?
98.1849+-1.5802 ? might be 1.0014x slower
<geometric> * 94.3256+-1.6731 ?
94.5058+-1.3205 ? might be 1.0019x slower
<harmonic> 90.7006+-1.3669 ?
90.9741+-0.9908 ? might be 1.0030x slower
Base
HashConst
V8Real:
encrypt 0.40839+-0.00114
0.40832+-0.00145
decrypt 7.04424+-0.01547
7.04140+-0.00548
deltablue x2 0.66529+-0.00875
0.66333+-0.00769
earley 2.14376+-0.01243 ?
2.15854+-0.01314 ?
boyer 13.95471+-0.03918
13.95424+-0.05520
raytrace x2 5.17177+-0.04428
5.13838+-0.04901
regexp x2 26.59154+-0.08747 ?
26.72360+-0.14260 ?
richards x2 0.34671+-0.00355
0.34661+-0.00257
splay x2 0.74072+-0.00383 ^
0.71081+-0.00533 ^ definitely 1.0421x faster
<arithmetic> 6.47023+-0.01220 ?
6.48057+-0.02214 ? might be 1.0016x slower
<geometric> * 2.15791+-0.00625 ^
2.14476+-0.00649 ^ definitely 1.0061x faster
<harmonic> 0.92915+-0.00427
0.92163+-0.00407 might be 1.0082x faster
Base
HashConst
Kraken:
ai-astar 794.943+-11.039
794.457+-11.576
audio-beat-detection 197.114+-1.162 ?
206.202+-11.136 ? might be 1.0461x slower
audio-dft 276.644+-0.650 ?
277.280+-2.925 ?
audio-fft 119.476+-0.449
119.453+-0.265
audio-oscillator 243.566+-0.434 ?
244.615+-0.621 ?
imaging-darkroom 286.999+-1.415 ?
287.954+-2.334 ?
imaging-desaturate 226.815+-0.484
226.659+-0.238
imaging-gaussian-blur 437.352+-1.542 ?
437.453+-2.217 ?
json-parse-financial 66.794+-0.230
66.649+-0.262
json-stringify-tinderbox 86.361+-0.918 ?
87.221+-2.289 ?
stanford-crypto-aes 87.739+-1.164
86.656+-0.328 might be 1.0125x faster
stanford-crypto-ccm 90.307+-0.296 ?
90.763+-0.321 ?
stanford-crypto-pbkdf2 196.523+-0.834 ?
196.833+-1.849 ?
stanford-crypto-sha256-iterative 96.218+-0.810 ?
96.330+-0.289 ?
<arithmetic> * 229.061+-0.818 ?
229.895+-1.476 ? might be 1.0036x slower
<geometric> 177.581+-0.290 ?
178.262+-0.859 ? might be 1.0038x slower
<harmonic> 144.159+-0.259 ?
144.510+-0.554 ? might be 1.0024x slower
Base
HashConst
JSBench:
amazon 18.0833+-0.3272 ?
18.4167+-0.3272 ? might be 1.0184x slower
facebook 70.2500+-1.2154 ?
70.4167+-1.5435 ?
google 96.1667+-0.7082
96.0000+-1.1494
twitter 53.0833+-0.4248 ^
52.2500+-0.2874 ^ definitely 1.0159x faster
yahoo 22.5000+-0.3318
22.1667+-0.2473 might be 1.0150x faster
<arithmetic> * 52.0167+-0.3272
51.8500+-0.3759 might be 1.0032x faster
<geometric> 42.9280+-0.2570
42.8264+-0.3306 might be 1.0024x faster
<harmonic> 34.8989+-0.2832 ?
34.9147+-0.3509 ? might be 1.0005x slower
Base
HashConst
JSRegress:
adapt-to-double-divide 73.0448+-0.2528 ?
73.3176+-0.5147 ?
aliased-arguments-getbyval 0.8252+-0.0153
0.8226+-0.0089
arity-mismatch-inlining 0.6705+-0.0089
0.6600+-0.0139 might be 1.0159x faster
big-int-mul 8.4999+-0.0774
8.4502+-0.0511
boolean-test 3.5269+-0.0315
3.5131+-0.0294
cast-int-to-double 12.0900+-0.0306 ?
12.1129+-0.0621 ?
cfg-simplify 3.0696+-0.0116 ?
3.0845+-0.0310 ?
cmpeq-obj-to-obj-other 8.6143+-0.3413
8.4200+-0.0558 might be 1.0231x faster
constant-test 6.8671+-0.0285
6.8647+-0.0593
direct-arguments-getbyval 0.7700+-0.0082
0.7698+-0.0149
double-pollution-getbyval 9.2234+-0.0308
9.2041+-0.0153
double-pollution-putbyoffset 4.7886+-0.6114 ?
5.1147+-0.8163 ? might be 1.0681x slower
external-arguments-getbyval 2.1439+-0.2492
2.1198+-0.2117 might be 1.0114x faster
external-arguments-putbyval 3.7456+-0.4770 ?
3.8689+-0.4926 ? might be 1.0329x slower
Float32Array-matrix-mult 11.3750+-0.5663 ?
11.7441+-0.6744 ? might be 1.0324x slower
fold-double-to-int 38.1196+-0.6664
37.6831+-0.3176 might be 1.0116x faster
function-dot-apply 2.6112+-0.0324 ^
2.5639+-0.0080 ^ definitely 1.0185x faster
function-test 4.0352+-0.0778 ?
4.0651+-0.0418 ?
inline-arguments-access 1.1399+-0.0121 ?
1.1551+-0.0184 ? might be 1.0134x slower
inline-arguments-local-escape 22.8221+-0.3672 ?
23.1902+-0.3512 ? might be 1.0161x slower
int-overflow-local 85.7052+-0.2149
85.5160+-0.1651
Int16Array-bubble-sort 66.9235+-1.3807
66.3555+-0.2462
Int16Array-load-int-mul 1.7750+-0.0209
1.7710+-0.0257
Int8Array-load 4.5036+-0.1126
4.4873+-0.0903
integer-divide 12.8903+-0.0449 ?
12.9670+-0.1169 ?
method-on-number 189.3689+-1.0929 ?
191.4051+-2.0277 ? might be 1.0108x slower
new-array-dead 23.3886+-0.0952 ?
23.4266+-0.1534 ?
new-array-push 10.8416+-1.6158
10.8325+-1.6281
number-test 3.4584+-0.0255
3.4408+-0.0363
object-test 3.8524+-0.0439 ?
3.9079+-0.0321 ? might be 1.0144x slower
poly-stricteq 79.1842+-0.8449 ?
80.9045+-1.7510 ? might be 1.0217x slower
rare-osr-exit-on-local 175.2612+-1.1155
173.8743+-0.6069
simple-activation-demo 40.1248+-0.4975
39.9025+-0.5046
slow-convergence 78.5798+-0.2815 ?
78.8012+-0.2196 ?
sparse-conditional 1.0674+-0.0153
1.0600+-0.0132
string-hash 4.2261+-0.0215 ?
4.2363+-0.0447 ?
string-test 3.4048+-0.0327
3.3857+-0.0127
tear-off-arguments 2.9834+-0.0114 ?
2.9946+-0.0141 ?
to-int32-boolean 23.1747+-0.0693
23.1611+-0.0303
undefined-test 3.7980+-0.0602
3.7848+-0.0540
<arithmetic> 25.8124+-0.0986 ?
25.8735+-0.1072 ? might be 1.0024x slower
<geometric> * 8.2821+-0.0552 ?
8.2997+-0.0463 ? might be 1.0021x slower
<harmonic> 3.4528+-0.0129
3.4489+-0.0130 might be 1.0011x faster
Base
HashConst
DSP:
filtrr-posterize-tint 44.1847+-0.7029
43.9408+-0.6471
filtrr-tint-contrast-sat-bright 70.3021+-0.5723 ?
71.8130+-2.5226 ? might be 1.0215x slower
filtrr-tint-sat-adj-contr-mult 90.3652+-0.6997 ?
92.1827+-1.9895 ? might be 1.0201x slower
filtrr-blur-overlay-sat-contr 223.4736+-4.6838 ?
224.0483+-4.6761 ?
filtrr-sat-blur-mult-sharpen-contr 274.9528+-1.7327 ?
277.0566+-2.0776 ?
filtrr-sepia-bias 33.1090+-0.4371 ?
33.1363+-0.5593 ?
route9-vp8 x5 1081.0710+-10.5430
1077.9987+-6.9789
starfield x5 1172.4700+-9.5640 ?
1176.9836+-6.9101 ?
<arithmetic> 750.2558+-5.9386 ?
751.0681+-3.3128 ? might be 1.0011x slower
<geometric> * 438.4555+-2.5311 ?
439.8283+-1.7897 ? might be 1.0031x slower
<harmonic> 168.1541+-1.2405 ?
168.9105+-1.9142 ? might be 1.0045x slower
Base
HashConst
All benchmarks:
<arithmetic> 143.1933+-0.8390 ?
143.4145+-0.4087 ? might be 1.0015x slower
<geometric> 19.3711+-0.1199 ?
19.3760+-0.1130 ? might be 1.0003x slower
<harmonic> 3.7289+-0.0144
3.7107+-0.0102 might be 1.0049x faster
Base
HashConst
Geomean of preferred means:
<scaled-result> 34.9745+-0.1795
34.9713+-0.1493 might be 1.0001x faster
More information about the webkit-reviews
mailing list