[webkit-reviews] review requested: [Bug 74191] YARR: Multi-character read optimization for 8bit strings : [Attachment 118636] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Dec 9 14:14:49 PST 2011


Michael Saboff <msaboff at apple.com> has asked  for review:
Bug 74191: YARR: Multi-character read optimization for 8bit strings
https://bugs.webkit.org/show_bug.cgi?id=74191

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

------- Additional Comments from Michael Saboff <msaboff at apple.com>
Tested a 64 bit version for X86-64 that did 1-4 characters for 16 bit strings
and 1-8 characters for 8 bit strings, but that version is slower than this 32
bit version.  I suspect that the reason is that there aren't any 64 bit logic
and compare instructions that take 64 bit immediate values thus needing to use
a temporary register.  This increases the number of instructions and possibly
uses more renamed registers.

Using the sun spider harness, regexp-dna goes from 14.0 ms to 10.0ms (+29%).

Bencher shows a greater % increase (46%). 

Benchmark report for SunSpider, V8, and Kraken on msaboff-pro.apple.com
(MacPro5,1).

VMs tested:
"Conf#1" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/jsc (r102454)

"Conf#2" at /Volumes/Data/src/webkit/WebKitBuild/Release/jsc (r102471)

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.

					      Conf#1		      Conf#2   
				 
SunSpider:
   3d-cube				  7.3308+-0.0519    ?	 
7.4966+-0.1323	     ? might be 1.0226x slower
   3d-morph				  8.5611+-0.1446	 
8.3932+-0.0345	       might be 1.0200x faster
   3d-raytrace				  7.7016+-0.0525    ?	 
7.7624+-0.1033	     ?
   access-binary-trees			  1.5953+-0.0084    !	 
1.6549+-0.0406	     ! definitely 1.0374x slower
   access-fannkuch			  7.5178+-0.0205    ?	 
7.5269+-0.0345	     ?
   access-nbody 			  3.9638+-0.0187	 
3.9385+-0.0167	     
   access-nsieve			  3.2228+-0.0552    ?	 
3.2369+-0.0658	     ?
   bitops-3bit-bits-in-byte		  1.2403+-0.0132    ?	 
1.2427+-0.0162	     ?
   bitops-bits-in-byte			  4.9608+-0.0576	 
4.9044+-0.0057	       might be 1.0115x faster
   bitops-bitwise-and			  3.2989+-0.0196	 
3.2854+-0.0040	     
   bitops-nsieve-bits			  5.6875+-0.0640	 
5.6344+-0.0344	     
   controlflow-recursive		  2.3070+-0.0266	 
2.2878+-0.0129	     
   crypto-aes				  7.3081+-0.0497    ?	 
7.3858+-0.0454	     ? might be 1.0106x slower
   crypto-md5				  2.4666+-0.0310    ?	 
2.4703+-0.0317	     ?
   crypto-sha1				  2.1842+-0.0341    ?	 
2.2145+-0.0425	     ? might be 1.0139x slower
   date-format-tofte			 11.0334+-0.1857	
10.8138+-0.1057 	might be 1.0203x faster
   date-format-xparb			 10.0543+-0.1416    !	
10.3172+-0.0833       ! definitely 1.0262x slower
   math-cordic				  7.2241+-0.0682	 
7.1663+-0.0574	     
   math-partial-sums			 10.5884+-0.0742    ?	
10.6348+-0.0553       ?
   math-spectral-norm			  2.6263+-0.0304    ?	 
2.6483+-0.0417	     ?
   regexp-dna				 13.0668+-0.0678    ^	 
8.9721+-0.0649	     ^ definitely 1.4564x faster
   string-base64			  4.2590+-0.0269	 
4.2281+-0.0147	     
   string-fasta 			  7.2582+-0.0597    ?	 
7.3990+-0.0923	     ? might be 1.0194x slower
   string-tagcloud			 12.4427+-0.0885    ?	
12.5360+-0.0947       ?
   string-unpack-code			 20.8654+-0.2174    ?	
21.1506+-0.2558       ? might be 1.0137x slower
   string-validate-input		  5.6095+-0.0893	 
5.5625+-0.0566	     

   <arithmetic> *			  6.7067+-0.0228    ^	 
6.5717+-0.0205	     ^ definitely 1.0206x faster
   <geometric>				  5.3829+-0.0197    ^	 
5.3210+-0.0166	     ^ definitely 1.0116x faster
   <harmonic>				  4.2026+-0.0192	 
4.1980+-0.0203	     

					      Conf#1		      Conf#2   
				 
V8:
   crypto				 76.0522+-0.2519    ?	
76.3492+-0.4030       ?
   deltablue				168.4075+-1.0626    ?  
169.2640+-1.6875       ?
   earley-boyer 			 99.8663+-1.1576    ?  
100.0184+-1.1615       ?
   raytrace				 57.1163+-0.2990    !	
58.3273+-0.2589       ! definitely 1.0212x slower
   regexp				124.1217+-0.7097    ?  
124.1842+-0.8959       ?
   richards				140.3142+-1.2846       
139.1383+-0.6220       
   splay				 89.6470+-1.0977    ?	
91.5579+-1.2189       ? might be 1.0213x slower

   <arithmetic> 			107.9322+-0.4103    ?  
108.4056+-0.3244       ?
   <geometric> *			101.8911+-0.3896    ?  
102.5413+-0.2725       ?
   <harmonic>				 95.9496+-0.3665    !	
96.7913+-0.2553       ! definitely 1.0088x slower

					      Conf#1		      Conf#2   
				 
Kraken:
   ai-astar				827.9136+-0.9099    ^  
808.9674+-12.4051      ^ definitely 1.0234x faster
   audio-beat-detection 		208.8627+-1.1664       
207.7250+-0.6196       
   audio-dft				280.5823+-7.2311       
277.2134+-2.9478	 might be 1.0122x faster
   audio-fft				136.4857+-0.6441       
136.2737+-0.5297       
   audio-oscillator			282.5474+-3.9736    ?  
285.1065+-4.4506       ?
   imaging-darkroom			334.0548+-4.4999    ?  
334.6535+-4.5716       ?
   imaging-desaturate			237.3633+-0.1224    ?  
237.6097+-0.1365       ?
   imaging-gaussian-blur		626.8731+-0.7891       
626.4669+-0.2731       
   json-parse-financial 		 71.9815+-0.2422    ^	
71.0415+-0.5815       ^ definitely 1.0132x faster
   json-stringify-tinderbox		 82.6528+-0.4891    ^	
81.5976+-0.2120       ^ definitely 1.0129x faster
   stanford-crypto-aes			116.3760+-0.2715    ^  
115.6811+-0.1324       ^ definitely 1.0060x faster
   stanford-crypto-ccm			114.4137+-0.6633    ?  
115.5305+-0.7824       ?
   stanford-crypto-pbkdf2		231.8913+-0.9906       
231.8791+-0.5605       
   stanford-crypto-sha256-iterative	 95.7288+-0.1486    !	
96.1305+-0.2364       ! definitely 1.0042x slower

   <arithmetic> *			260.5519+-0.7184       
258.9912+-0.9973       
   <geometric>				199.9573+-0.5722       
199.2592+-0.4427       
   <harmonic>				160.3298+-0.3722       
159.7248+-0.3229       

					      Conf#1		      Conf#2   
				 
All benchmarks:
   <arithmetic> 			 97.3963+-0.2485	
96.9272+-0.3097       
   <geometric>				 24.4828+-0.0773    ^	
24.3243+-0.0577       ^ definitely 1.0065x faster
   <harmonic>				  7.4052+-0.0334	 
7.3976+-0.0351	     

					      Conf#1		      Conf#2   
				 
Geomean of preferred means:
   <scaled-result>			 56.2572+-0.1569    ^	
55.8836+-0.1362       ^ definitely 1.0067x faster


More information about the webkit-reviews mailing list