[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