[webkit-reviews] review requested: [Bug 97691] Add ability for JSArray::unshiftCount to unshift in middle of an array : [Attachment 165819] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Sep 26 09:12:09 PDT 2012


Michael Saboff <msaboff at apple.com> has asked  for review:
Bug 97691: Add ability for JSArray::unshiftCount to unshift in middle of an
array
https://bugs.webkit.org/show_bug.cgi?id=97691

Attachment 165819: Patch
https://bugs.webkit.org/attachment.cgi?id=165819&action=review

------- Additional Comments from Michael Saboff <msaboff at apple.com>
Here is the performance data for this patch.  I reran just browsermark-js and
saw no slowdown on array_blur.

Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress,
DSP, BrowsermarkJS, and BrowsermarkDOM on msaboff-pro (MacPro5,1).

VMs tested:
"Base" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/DumpRenderTree
(r129520)
"UnshiftOpt" at
/Volumes/Data/src/webkit.work/WebKitBuild/Release/DumpRenderTree (r129520)

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		   
UnshiftOpt				      
SunSpider:
   3d-cube					8.9070+-0.4115	   ?	 
8.9251+-0.4109	      ?
   3d-morph					7.6528+-0.0695	   ?	 
7.6684+-0.0421	      ?
   3d-raytrace				       12.5421+-0.2923	   ?	
12.6467+-0.3392        ?
   access-binary-trees				2.3043+-0.4384		 
2.2860+-0.4285	      
   access-fannkuch				6.7549+-0.0455		 
6.7246+-0.0249	      
   access-nbody 				4.2389+-0.0286		 
4.2266+-0.0355	      
   access-nsieve				3.4221+-0.0470	   ?	 
3.4816+-0.0555	      ? might be 1.0174x slower
   bitops-3bit-bits-in-byte			1.3607+-0.0100		 
1.3580+-0.0082	      
   bitops-bits-in-byte				5.7671+-0.0209		 
5.7443+-0.0195	      
   bitops-bitwise-and				2.1956+-0.0513	   ?	 
2.2041+-0.0293	      ?
   bitops-nsieve-bits				3.5128+-0.0097	   ?	 
3.5316+-0.0370	      ?
   controlflow-recursive			2.5124+-0.0187		 
2.5089+-0.0154	      
   crypto-aes					9.5934+-0.4560	   ?	 
9.6112+-0.4311	      ?
   crypto-md5					4.0577+-0.1782		 
3.9596+-0.1115		might be 1.0248x faster
   crypto-sha1					3.3370+-0.2377		 
3.1824+-0.0369		might be 1.0486x faster
   date-format-tofte			       14.1293+-0.9179		
13.9694+-0.9034 	 might be 1.0114x faster
   date-format-xparb			       11.9128+-0.5754		
11.6569+-0.5107 	 might be 1.0220x faster
   math-cordic					4.2426+-0.0875	   ?	 
4.2898+-0.0920	      ? might be 1.0111x slower
   math-partial-sums			       10.3206+-0.0611	   ?	
10.3240+-0.1010        ?
   math-spectral-norm				3.0738+-0.0323		 
3.0583+-0.0219	      
   regexp-dna				       10.4303+-0.4001	   ?	
10.5125+-0.3420        ?
   string-base64				5.6996+-0.5414		 
5.5063+-0.4130		might be 1.0351x faster
   string-fasta 				8.2432+-0.3093		 
8.1925+-0.3201	      
   string-tagcloud			       13.7845+-0.2941		
13.6668+-0.2291        
   string-unpack-code			       25.5450+-0.6396	   ?	
25.6005+-0.5872        ?
   string-validate-input			8.7420+-0.5940	   ?	 
8.7485+-0.5456	      ?

   <arithmetic> *				7.4724+-0.1442		 
7.4456+-0.1685		might be 1.0036x faster
   <geometric>					5.9231+-0.1214		 
5.8993+-0.1267		might be 1.0040x faster
   <harmonic>					4.6432+-0.1006		 
4.6259+-0.0985		might be 1.0037x faster

						     Base		   
UnshiftOpt				      
V8Spider:
   crypto				       77.0292+-0.3806	   ?	
77.0435+-0.4834        ?
   deltablue				      119.2475+-0.4669	       
119.0133+-0.4813	
   earley-boyer 			       91.6742+-1.6376		
91.0826+-1.7689        
   raytrace				       64.0670+-0.3897		
63.8701+-0.2537        
   regexp				       87.7629+-0.8198		
87.3886+-0.3580        
   richards				       96.7946+-1.3499		
96.4373+-1.1282        
   splay				       98.7116+-23.1225    ?	
99.7802+-22.7950       ? might be 1.0108x slower

   <arithmetic> 			       90.7553+-3.1565		
90.6594+-3.1229 	 might be 1.0011x faster
   <geometric> *			       88.6343+-2.7126		
88.5591+-2.6503 	 might be 1.0008x faster
   <harmonic>				       86.6357+-2.3376		
86.5846+-2.2512 	 might be 1.0006x faster

						     Base		   
UnshiftOpt				      
Octane and V8v7:
   encrypt				       0.40942+-0.00057    ?	
0.41136+-0.00217       ?
   decrypt				       7.12104+-0.00754 	
7.11715+-0.00825       
   deltablue			      x2       0.54869+-0.00745 	
0.54839+-0.00480       
   earley				       0.94881+-0.00687 	
0.94426+-0.00725       
   boyer				      13.47526+-0.05659        
13.45574+-0.05278	
   raytrace			      x2       4.53751+-0.15072 	
4.46667+-0.04337	 might be 1.0159x faster
   regexp			      x2      26.67053+-0.20591    ?   
26.67730+-0.07058	?
   richards			      x2       0.25499+-0.00451    ?	
0.25510+-0.00470       ?
   splay			      x2       0.74306+-0.00581    !	
0.76202+-0.00733       ! definitely 1.0255x slower
   navier-stokes		      x2      12.68348+-0.03432        
12.67114+-0.00967	
   closure				       0.47538+-0.00181 	
0.47409+-0.00272       
   jquery				       7.02118+-0.04120 	
7.01439+-0.04609       
   gbemu			      x2     286.90147+-6.31100       
278.03032+-5.27124	   might be 1.0319x faster
   mandreel			      x2     195.16883+-0.60392       
194.36253+-0.50723	 
   pdfjs			      x2     134.29441+-0.84228    ^  
107.20744+-0.84321	 ^ definitely 1.2527x faster
   box2d			      x2      30.73129+-0.12063    ?   
30.74297+-0.16862	?

V8v7:
   <arithmetic> 			       7.05194+-0.03238 	
7.04311+-0.01079	 might be 1.0013x faster
   <geometric> *			       2.36319+-0.01291    ?	
2.36572+-0.00942       ? might be 1.0011x slower
   <harmonic>				       0.86159+-0.00680    ?	
0.86480+-0.00766       ? might be 1.0037x slower

Octane including V8v7:
   <arithmetic> 			      54.40460+-0.42715    ^   
51.57172+-0.35589	^ definitely 1.0549x faster
   <geometric> *			       7.82205+-0.02826    ^	
7.67092+-0.01404       ^ definitely 1.0197x faster
   <harmonic>				       1.24321+-0.00908    ?	
1.24670+-0.00985       ? might be 1.0028x slower

						     Base		   
UnshiftOpt				      
Kraken:
   ai-astar				       483.462+-4.054		
481.843+-5.005	       
   audio-beat-detection 		       195.527+-11.930	   ?	
197.143+-10.996        ?
   audio-dft				       260.557+-1.592	   ?	
262.163+-0.610	       ?
   audio-fft				       117.010+-0.199	   ?	
117.039+-0.273	       ?
   audio-oscillator			       244.856+-0.645		
244.355+-0.865	       
   imaging-darkroom			       285.666+-0.947		
285.506+-1.183	       
   imaging-desaturate			       200.736+-0.354		
200.483+-0.227	       
   imaging-gaussian-blur		       435.764+-0.605		
435.714+-0.603	       
   json-parse-financial 			62.927+-0.387	   ?	 
63.055+-0.189	      ?
   json-stringify-tinderbox			80.967+-0.402		 
80.667+-0.324	      
   stanford-crypto-aes				89.317+-0.606	   ?	 
90.517+-0.999	      ? might be 1.0134x slower
   stanford-crypto-ccm				85.535+-0.369	   ?	 
85.815+-0.238	      ?
   stanford-crypto-pbkdf2		       208.172+-1.008		
207.635+-0.946	       
   stanford-crypto-sha256-iterative		99.527+-0.444	   ?	 
99.621+-0.417	      ?

   <arithmetic> *			       203.573+-0.981	   ?	
203.683+-0.907	       ? might be 1.0005x slower
   <geometric>				       167.917+-0.735	   ?	
168.170+-0.661	       ? might be 1.0015x slower
   <harmonic>				       139.379+-0.450	   ?	
139.682+-0.427	       ? might be 1.0022x slower

						     Base		   
UnshiftOpt				      
JSBench:
   amazon				       18.6667+-0.3128	   ?	
18.7500+-0.2874        ?
   facebook				       73.4167+-1.4453	   ?	
73.8333+-1.3770        ?
   google				       91.8333+-0.7082		
91.7500+-0.7232        
   twitter				       54.9167+-0.1834		
54.4167+-0.3272        
   yahoo				       23.0000+-0.0000	   ?	
23.2500+-0.2874        ? might be 1.0109x slower

   <arithmetic> *			       52.3667+-0.3901	   ?	
52.4000+-0.4018        ? might be 1.0006x slower
   <geometric>				       43.6714+-0.2153	   ?	
43.7665+-0.2934        ? might be 1.0022x slower
   <harmonic>				       35.7634+-0.2066	   ?	
35.9193+-0.2928        ? might be 1.0044x slower

						     Base		   
UnshiftOpt				      
JSRegress:
   adapt-to-double-divide		       73.0738+-0.1438		
73.0585+-0.1970        
   aliased-arguments-getbyval			0.8723+-0.0121		 
0.8723+-0.0099	      
   allocate-big-object				4.0945+-1.4557		 
3.6423+-1.2375		might be 1.1242x faster
   arity-mismatch-inlining			0.6920+-0.0142	   ?	 
0.7248+-0.0451	      ? might be 1.0474x slower
   big-int-mul					8.8438+-1.0023		 
8.7682+-1.0091	      
   boolean-test 				3.4274+-0.0152	   ?	 
3.4368+-0.0074	      ?
   cast-int-to-double			       12.4430+-0.0512	   ?	
12.4569+-0.0544        ?
   cfg-simplify 				3.0893+-0.0068	   ?	 
3.0934+-0.0123	      ?
   cmpeq-obj-to-obj-other			9.0467+-0.1588	   ?	 
9.2484+-0.1687	      ? might be 1.0223x slower
   constant-test				6.9192+-0.0548		 
6.8756+-0.0115	      
   direct-arguments-getbyval			0.7965+-0.0093		 
0.7961+-0.0110	      
   double-pollution-getbyval			9.2394+-0.0108	   ?	 
9.2564+-0.0260	      ?
   double-pollution-putbyoffset 		5.3846+-0.8091		 
5.3254+-0.7926		might be 1.0111x faster
   external-arguments-getbyval			1.9645+-0.1569	   ?	 
1.9850+-0.1661	      ? might be 1.0105x slower
   external-arguments-putbyval			3.7186+-0.3413		 
3.6394+-0.3638		might be 1.0218x faster
   Float32Array-matrix-mult		       12.3239+-0.7644	   ?	
12.6120+-0.8141        ? might be 1.0234x slower
   fold-double-to-int			       20.8663+-0.1262		
20.7966+-0.0961        
   function-dot-apply				2.6230+-0.0081	   ?	 
2.6493+-0.0244	      ? might be 1.0100x slower
   function-test				3.8375+-0.0459		 
3.8356+-0.0467	      
   indexed-properties-in-objects		3.5964+-0.0183	   ?	 
3.6296+-0.0417	      ?
   inline-arguments-access			1.1932+-0.0329		 
1.1886+-0.0146	      
   inline-arguments-local-escape	       18.6463+-0.6293		
18.5442+-0.1713        
   int-overflow-local			       85.5216+-0.2483	   ?	
85.5880+-0.2436        ?
   Int16Array-bubble-sort		       66.9978+-1.5906	   ?	
67.5916+-2.1150        ?
   Int16Array-load-int-mul			1.8024+-0.0092	   ?	 
1.8174+-0.0146	      ?
   Int8Array-load				4.6186+-0.1022		 
4.6064+-0.0712	      
   integer-divide			       12.9638+-0.0717		
12.9484+-0.0411        
   method-on-number			      182.4060+-0.6054	   ?   
185.9722+-3.0797	? might be 1.0196x slower
   new-array-dead			       23.4450+-0.1019		
23.4385+-0.0991        
   new-array-push			       10.7090+-3.2304	   ?	
10.8295+-3.3065        ? might be 1.0112x slower
   number-test					3.3650+-0.0135	   ?	 
3.3891+-0.0355	      ?
   object-test					3.7599+-0.0318	   ?	 
3.7814+-0.0400	      ?
   poly-stricteq			       84.2638+-1.2666		
83.2393+-0.1524 	 might be 1.0123x faster
   rare-osr-exit-on-local		      137.3691+-0.2507	       
137.2561+-0.1932	
   simple-activation-demo		       31.4492+-0.5116		
30.9943+-0.5030 	 might be 1.0147x faster
   slow-convergence			       72.8972+-0.3993		
72.6256+-0.4252        
   sparse-conditional				1.0892+-0.0098	   ?	 
1.0904+-0.0091	      ?
   string-hash					4.6249+-0.4814	   ?	 
4.6360+-0.5094	      ?
   string-test					3.3305+-0.0313		 
3.3231+-0.0192	      
   tear-off-arguments				3.1053+-0.0266		 
3.0822+-0.0131	      
   to-int32-boolean			       23.1521+-0.0255	   ?	
23.1936+-0.0846        ?
   undefined-test				3.5517+-0.0218	   ?	 
3.5860+-0.0589	      ?

   <arithmetic> 			       23.0265+-0.1780	   ?	
23.0815+-0.1591        ? might be 1.0024x slower
   <geometric> *				7.7670+-0.1299		 
7.7661+-0.1252		might be 1.0001x faster
   <harmonic>					3.4972+-0.0224	   ?	 
3.5112+-0.0396	      ? might be 1.0040x slower

						     Base		   
UnshiftOpt				      
DSP:
   filtrr-posterize-tint		       42.7914+-0.1800	   ?	
43.1624+-0.2714        ?
   filtrr-tint-contrast-sat-bright	       64.0433+-0.3528		
63.7483+-0.2926        
   filtrr-tint-sat-adj-contr-mult	       80.7600+-1.1376	   ?	
81.0677+-1.0036        ?
   filtrr-blur-overlay-sat-contr	      225.2779+-7.4716	       
224.8127+-7.0852	
   filtrr-sat-blur-mult-sharpen-contr	      246.0099+-1.9833	       
245.9871+-1.1113	
   filtrr-sepia-bias			       29.1553+-0.4512	   ?	
29.1689+-0.4793        ?
   route9-vp8			      x5     1159.8174+-4.5878	      
1157.9030+-6.9694	 
   starfield			      x5     1132.2744+-6.5787	      
1125.2117+-4.0868	 
   zynaps-quake3		      x5     1638.8412+-10.3403       
1629.3045+-13.8232	 
   zynaps-mandelbrot		      x5      949.1073+-5.6078	   ?   
958.7376+-4.5850	? might be 1.0101x slower

   <arithmetic> 			      964.9323+-2.5486	       
963.2204+-3.4773	  might be 1.0018x faster
   <geometric> *			      648.1368+-1.3753	       
647.8374+-1.6353	  might be 1.0005x faster
   <harmonic>				      233.7241+-1.5693	   ?   
234.1014+-1.3999	? might be 1.0016x slower

						     Base		   
UnshiftOpt				      
BrowsermarkJS:
   array_blur				      13.46028+-0.03228    !   
13.56296+-0.06393	! definitely 1.0076x slower
   array_weighted			       0.00618+-0.00005 	
0.00616+-0.00004       
   string_chat				       0.01554+-0.00007    ?	
0.01560+-0.00005       ?
   string_filter			       0.01819+-0.00012 	
0.01815+-0.00023       
   string_weighted			       0.01165+-0.00008    ?	
0.01170+-0.00009       ?

   <arithmetic> 			       2.70237+-0.00644    !	
2.72291+-0.01281       ! definitely 1.0076x slower
   <geometric> *			       0.04871+-0.00011    ?	
0.04879+-0.00020       ? might be 1.0017x slower
   <harmonic>				       0.01363+-0.00005 	
0.01362+-0.00007	 might be 1.0007x faster

						     Base		   
UnshiftOpt				      
BrowsermarkDOM:
   advanced_search			       1.08540+-0.01474 	
1.08518+-0.01076       
   create_source			       3.49763+-0.78096    ?	
3.49837+-0.78237       ?
   dynamic_create			       3.53932+-0.82359 	
3.53063+-0.81326       
   search				       0.10536+-0.00081    ?	
0.10641+-0.00059       ?

   <arithmetic> 			       2.05693+-0.40116 	
2.05515+-0.39906	 might be 1.0009x faster
   <geometric> *			       1.07348+-0.12882    ?	
1.07567+-0.12848       ? might be 1.0020x slower
   <harmonic>				       0.36168+-0.00589    ?	
0.36476+-0.00575       ? might be 1.0085x slower

						     Base		   
UnshiftOpt				      
All benchmarks:
   <arithmetic> 			      202.7938+-0.5797	       
202.0491+-0.7009	  might be 1.0037x faster
   <geometric>				       19.6040+-0.1509		
19.5300+-0.1440 	 might be 1.0038x faster
   <harmonic>					0.3717+-0.0014		 
0.3716+-0.0016		might be 1.0002x faster

						     Base		   
UnshiftOpt				      
Geomean of preferred means:
   <scaled-result>			       22.4142+-0.2480		
22.3653+-0.2352 	 might be 1.0022x faster


More information about the webkit-reviews mailing list