Bug 74480

Summary: DFG should infer when local variables are doubles
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: webkit.review.bot
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
work in progress
none
the patch oliver: review+

Description Filip Pizlo 2011-12-13 20:32:33 PST
Currently the DFG will box and unbox double variables that span basic blocks. This is expensive.  On 64-bit platforms (that use JSVALUE64) it means moving data between FPR file and the GPR file, and doing some arithmetic.  Moving data between FPR and GPR is typically expensive on x86-64.  On 32-bit systems that means clobbering three registers at a time (two GPRs and one FPR), doing twice as many loads and stores, and also doing data movement between FPRs and GPRs.

It also means that the DFG must recheck that a local variable contains a double most of the time when a basic block uses it for the first time.

The DFG should instead realize when a local variable contains a double.
Comment 1 Filip Pizlo 2011-12-13 20:32:57 PST
<rdar://problem/10577764>
Comment 2 Filip Pizlo 2011-12-13 20:34:52 PST
This seems to speed up SunSpider by almost 1% and Kraken by over 4%.



[pizlo@nitroflex bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc InferDouble:/Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc --remote oldmac,bigmac
Packaging VM builds for remote hosts...
Sending VM builds to oldmac...
Running on oldmac...
376/376                                                          
Generating benchmark report at TipOfTree_InferDouble_SunSpiderV8Kraken_20111213_2031_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r102726)
"InferDouble" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r102726)

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.

                                            TipOfTree              InferDouble                                   
SunSpider:
   3d-cube                                8.8640+-0.0429    ^     7.4783+-0.0387       ^ definitely 1.1853x faster
   3d-morph                              10.1664+-0.1668         10.0235+-0.0396         might be 1.0143x faster
   3d-raytrace                           10.0254+-0.8807          9.1721+-0.0705         might be 1.0930x faster
   access-binary-trees                    1.9152+-0.0090    ?     1.9269+-0.0090       ?
   access-fannkuch                        8.9156+-0.0068    !     9.1071+-0.0079       ! definitely 1.0215x slower
   access-nbody                           4.7595+-0.0254    ?     4.7900+-0.0194       ?
   access-nsieve                          3.7866+-0.0047    !     3.8020+-0.0041       ! definitely 1.0041x slower
   bitops-3bit-bits-in-byte               1.5002+-0.0191    ?     1.5625+-0.0496       ? might be 1.0415x slower
   bitops-bits-in-byte                    6.1139+-0.0243    ?     6.1573+-0.0369       ?
   bitops-bitwise-and                     3.9910+-0.0376          3.9838+-0.0095       
   bitops-nsieve-bits                     6.8580+-0.0513          6.7878+-0.0329         might be 1.0103x faster
   controlflow-recursive                  2.8194+-0.0162    ?     2.8544+-0.0249       ? might be 1.0124x slower
   crypto-aes                             9.1490+-0.3096          9.0991+-0.0468       
   crypto-md5                             2.9499+-0.0146    !     3.0445+-0.0578       ! definitely 1.0321x slower
   crypto-sha1                            2.6060+-0.0203    !     2.6795+-0.0190       ! definitely 1.0282x slower
   date-format-tofte                     13.2222+-0.3235         12.8159+-0.1231         might be 1.0317x faster
   date-format-xparb                     12.1189+-0.1112    ^    11.8531+-0.1179       ^ definitely 1.0224x faster
   math-cordic                            8.6257+-0.0290    ?     8.6343+-0.0248       ?
   math-partial-sums                     12.7365+-0.1972    ?    12.7552+-0.2154       ?
   math-spectral-norm                     3.1432+-0.0107    !     3.1836+-0.0043       ! definitely 1.0128x slower
   regexp-dna                            10.7363+-0.0470    ?    10.7956+-0.1236       ?
   string-base64                          5.2740+-0.1528          5.1653+-0.0371         might be 1.0210x faster
   string-fasta                           8.7299+-0.0440          8.7156+-0.0123       
   string-tagcloud                       14.7977+-0.0608    ?    14.8364+-0.0648       ?
   string-unpack-code                    25.2653+-0.0788    !    26.1269+-0.6823       ! definitely 1.0341x slower
   string-validate-input                  6.9628+-0.2511          6.8991+-0.1079       

   <arithmetic> *                         7.9243+-0.0316    ^     7.8557+-0.0346       ^ definitely 1.0087x faster
   <geometric>                            6.4154+-0.0237          6.3781+-0.0215         might be 1.0059x faster
   <harmonic>                             5.0441+-0.0202    ?     5.0683+-0.0227       ? might be 1.0048x slower

                                            TipOfTree              InferDouble                                   
V8:
   crypto                                92.3189+-0.1768    !    92.9931+-0.2907       ! definitely 1.0073x slower
   deltablue                            202.2128+-0.7672    ?   204.2764+-2.6381       ? might be 1.0102x slower
   earley-boyer                         120.2561+-1.5281        119.9834+-1.0816       
   raytrace                              62.6864+-0.2945    ?    62.9496+-0.3395       ?
   regexp                               146.4076+-0.3915    ?   147.5305+-1.0621       ?
   richards                             169.3085+-0.9655        168.7773+-0.1446       
   splay                                109.0943+-2.6160        107.2942+-1.4021         might be 1.0168x faster

   <arithmetic>                         128.8978+-0.3947    ?   129.1149+-0.5027       ? might be 1.0017x slower
   <geometric> *                        121.0234+-0.4854    ?   121.1533+-0.4136       ? might be 1.0011x slower
   <harmonic>                           112.9735+-0.5265    ?   113.0861+-0.3863       ? might be 1.0010x slower

                                            TipOfTree              InferDouble                                   
Kraken:
   ai-astar                             896.2120+-0.9081    ?   897.4056+-1.4467       ?
   audio-beat-detection                 249.7459+-0.7168    ^   236.9684+-4.7124       ^ definitely 1.0539x faster
   audio-dft                            333.0498+-2.6652        332.0324+-2.7483       
   audio-fft                            162.2732+-0.5465    ^   145.1072+-1.7622       ^ definitely 1.1183x faster
   audio-oscillator                     349.9188+-7.0760    ?   351.8688+-6.0331       ?
   imaging-darkroom                     390.6610+-7.3585    ^   365.0496+-9.1288       ^ definitely 1.0702x faster
   imaging-desaturate                   287.2454+-0.2057        287.0173+-0.1003       
   imaging-gaussian-blur                758.5774+-0.5489    ^   629.6762+-0.3251       ^ definitely 1.2047x faster
   json-parse-financial                  86.2733+-0.6693    ^    84.3297+-0.1604       ^ definitely 1.0230x faster
   json-stringify-tinderbox             100.0438+-0.4731         99.4582+-0.2832       
   stanford-crypto-aes                  140.6614+-0.5033    ?   141.6958+-0.6747       ?
   stanford-crypto-ccm                  136.0580+-0.8596    ?   138.4874+-2.8805       ? might be 1.0179x slower
   stanford-crypto-pbkdf2               283.1231+-3.2818        281.5303+-2.3855       
   stanford-crypto-sha256-iterative     116.7429+-0.1577    ?   116.9579+-0.2699       ?

   <arithmetic> *                       306.4704+-0.7919    ^   293.3989+-0.7825       ^ definitely 1.0446x faster
   <geometric>                          238.8340+-0.5606    ^   231.7124+-0.6685       ^ definitely 1.0307x faster
   <harmonic>                           192.6930+-0.3632    ^   188.6710+-0.5133       ^ definitely 1.0213x faster

                                            TipOfTree              InferDouble                                   
All benchmarks:
   <arithmetic>                         114.8703+-0.2586    ^   110.9710+-0.2019       ^ definitely 1.0351x faster
   <geometric>                           29.1832+-0.0820    ^    28.8325+-0.0695       ^ definitely 1.0122x faster
   <harmonic>                             8.8861+-0.0351    ?     8.9251+-0.0391       ? might be 1.0044x slower

                                            TipOfTree              InferDouble                                   
Geomean of preferred means:
   <scaled-result>                       66.4871+-0.1791    ^    65.3617+-0.1533       ^ definitely 1.0172x faster

Sending VM builds to bigmac...
Running on bigmac...
376/376                                                          
Generating benchmark report at TipOfTree_InferDouble_SunSpiderV8Kraken_20111213_2034_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on bigmac.local (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r102726)
"InferDouble" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r102726)

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.

                                            TipOfTree              InferDouble                                   
SunSpider:
   3d-cube                                7.3599+-0.0172    ^     6.1935+-0.0176       ^ definitely 1.1883x faster
   3d-morph                               8.2787+-0.0331    ?     8.3131+-0.0408       ?
   3d-raytrace                            7.7594+-0.0530    ^     7.5626+-0.0297       ^ definitely 1.0260x faster
   access-binary-trees                    1.5990+-0.0052    !     1.6218+-0.0143       ! definitely 1.0143x slower
   access-fannkuch                        7.3794+-0.0073    !     7.4922+-0.0038       ! definitely 1.0153x slower
   access-nbody                           3.9501+-0.0174    ?     3.9710+-0.0097       ?
   access-nsieve                          3.1931+-0.0443    ?     3.1985+-0.0472       ?
   bitops-3bit-bits-in-byte               1.2343+-0.0055    !     1.2645+-0.0171       ! definitely 1.0245x slower
   bitops-bits-in-byte                    5.0627+-0.0232    !     5.1193+-0.0273       ! definitely 1.0112x slower
   bitops-bitwise-and                     3.2883+-0.0042    ?     3.2890+-0.0039       ?
   bitops-nsieve-bits                     5.6403+-0.0372    ?     5.6504+-0.0354       ?
   controlflow-recursive                  2.3189+-0.0138    ?     2.3545+-0.0273       ? might be 1.0154x slower
   crypto-aes                             7.4006+-0.0336    !     7.5795+-0.0310       ! definitely 1.0242x slower
   crypto-md5                             2.4745+-0.0309    ?     2.4950+-0.0210       ?
   crypto-sha1                            2.1917+-0.0449    ?     2.2407+-0.0278       ? might be 1.0224x slower
   date-format-tofte                     11.0961+-0.1433    ^    10.5340+-0.0384       ^ definitely 1.0534x faster
   date-format-xparb                      9.8547+-0.1059    ^     9.5439+-0.0965       ^ definitely 1.0326x faster
   math-cordic                            7.1632+-0.0410    ?     7.1637+-0.0393       ?
   math-partial-sums                     10.3850+-0.0217    ?    10.3925+-0.0196       ?
   math-spectral-norm                     2.6165+-0.0184    !     2.6503+-0.0131       ! definitely 1.0129x slower
   regexp-dna                             8.8524+-0.0147    ?     8.8590+-0.0807       ?
   string-base64                          4.2392+-0.0153    ?     4.2676+-0.0196       ?
   string-fasta                           7.2051+-0.0222    ?     7.2101+-0.0155       ?
   string-tagcloud                       12.3163+-0.0420         12.2793+-0.0387       
   string-unpack-code                    20.3161+-0.0639    !    20.5405+-0.0945       ! definitely 1.0110x slower
   string-validate-input                  5.6125+-0.0396    !     5.7773+-0.1028       ! definitely 1.0294x slower

   <arithmetic> *                         6.4918+-0.0170    ^     6.4448+-0.0153       ^ definitely 1.0073x faster
   <geometric>                            5.2794+-0.0164          5.2639+-0.0163         might be 1.0029x faster
   <harmonic>                             4.1698+-0.0171    ?     4.1920+-0.0188       ? might be 1.0053x slower

                                            TipOfTree              InferDouble                                   
V8:
   crypto                                76.4124+-0.1538    !    77.0335+-0.1729       ! definitely 1.0081x slower
   deltablue                            168.1110+-0.6092    ?   168.7514+-0.3281       ?
   earley-boyer                          99.2037+-1.1928         98.8622+-1.2312       
   raytrace                              52.0740+-0.2648    ?    52.4510+-0.3786       ?
   regexp                               122.5762+-0.4387    ?   122.5942+-0.2169       ?
   richards                             140.6193+-0.7333        139.5501+-0.3941       
   splay                                 90.2985+-1.3064    ?    91.0237+-0.7212       ?

   <arithmetic>                         107.0421+-0.3858    ?   107.1809+-0.2302       ? might be 1.0013x slower
   <geometric> *                        100.4577+-0.3973    ?   100.6914+-0.2481       ? might be 1.0023x slower
   <harmonic>                            93.7450+-0.3869    ?    94.0821+-0.2642       ? might be 1.0036x slower

                                            TipOfTree              InferDouble                                   
Kraken:
   ai-astar                             807.6937+-13.0171   ?   817.9578+-10.9610      ? might be 1.0127x slower
   audio-beat-detection                 204.3632+-0.5384    ^   191.4491+-0.5621       ^ definitely 1.0675x faster
   audio-dft                            276.4388+-2.6729        274.2325+-2.9873       
   audio-fft                            132.8794+-0.7502    ^   118.3667+-0.2785       ^ definitely 1.1226x faster
   audio-oscillator                     284.9315+-4.3764        281.0456+-3.3328         might be 1.0138x faster
   imaging-darkroom                     324.4538+-6.9686    ^   304.7928+-8.4104       ^ definitely 1.0645x faster
   imaging-desaturate                   237.5346+-0.0964    ?   239.1287+-1.8817       ?
   imaging-gaussian-blur                626.5905+-1.1450    ^   520.3426+-0.6142       ^ definitely 1.2042x faster
   json-parse-financial                  70.3191+-0.1552    ^    69.5164+-0.0608       ^ definitely 1.0115x faster
   json-stringify-tinderbox              82.0737+-0.2916         81.6829+-0.1863       
   stanford-crypto-aes                  117.5053+-0.5505    ?   118.4122+-0.7377       ?
   stanford-crypto-ccm                  114.0254+-0.5261        113.5638+-0.6127       
   stanford-crypto-pbkdf2               230.9448+-0.2295        230.8450+-1.0556       
   stanford-crypto-sha256-iterative      96.0198+-0.2617    ?    96.3091+-0.2522       ?

   <arithmetic> *                       257.5553+-1.4028    ^   246.9747+-0.9613       ^ definitely 1.0428x faster
   <geometric>                          198.0558+-0.6962    ^   191.8997+-0.5139       ^ definitely 1.0321x faster
   <harmonic>                           158.8931+-0.3653    ^   155.4050+-0.3034       ^ definitely 1.0224x faster

                                            TipOfTree              InferDouble                                   
All benchmarks:
   <arithmetic>                          96.2523+-0.4319    ^    93.0952+-0.3051       ^ definitely 1.0339x faster
   <geometric>                           24.1014+-0.0648    ^    23.8453+-0.0635       ^ definitely 1.0107x faster
   <harmonic>                             7.3459+-0.0296    ?     7.3821+-0.0326       ? might be 1.0049x slower

                                            TipOfTree              InferDouble                                   
Geomean of preferred means:
   <scaled-result>                       55.1742+-0.1569    ^    54.3187+-0.1325       ^ definitely 1.0157x faster

[pizlo@nitroflex bencher]
Comment 3 Filip Pizlo 2011-12-13 20:42:27 PST
Created attachment 119149 [details]
work in progress

Still need to write the JSVALUE32_64 code.
Comment 4 WebKit Review Bot 2011-12-13 20:45:16 PST
Attachment 119149 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1

Source/JavaScriptCore/dfg/DFGPropagator.cpp:676:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 5 Filip Pizlo 2011-12-13 22:46:53 PST
Created attachment 119157 [details]
the patch

Wrote the JSVALUE32_64 code.  Luckily, the OSR exit/entry for JSVALUE32_64 needed no special work since an IEEE double is also a valid JSVALUE32_64 double.
Comment 6 Filip Pizlo 2011-12-13 22:49:36 PST
Performance on JSVALUE32_64:



[pizlo@nitroflex bencher] ./bencher TipOfTree32:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc InferDouble32:/Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc --remote oldmac,bigmac
Packaging VM builds for remote hosts...
Sending VM builds to oldmac...
Running on oldmac...
376/376                                                            
Generating benchmark report at TipOfTree32_InferDouble32_SunSpiderV8Kraken_20111213_2243_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
"TipOfTree32" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r102726)
"InferDouble32" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r102726)

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.

                                           TipOfTree32            InferDouble32                                  
SunSpider:
   3d-cube                                9.8759+-0.0260    ^     8.7524+-0.0249       ^ definitely 1.1284x faster
   3d-morph                              13.2675+-0.0453    ?    13.2834+-0.0400       ?
   3d-raytrace                           11.6581+-0.0232         11.6313+-0.0210       
   access-binary-trees                    2.3372+-0.0110    !     2.3600+-0.0107       ! definitely 1.0098x slower
   access-fannkuch                       11.1245+-0.0296    !    11.2900+-0.0285       ! definitely 1.0149x slower
   access-nbody                           6.8743+-0.0065    ?     6.8972+-0.0175       ?
   access-nsieve                          3.7255+-0.0076    ?     3.7543+-0.0349       ?
   bitops-3bit-bits-in-byte               1.5625+-0.0270          1.5620+-0.0248       
   bitops-bits-in-byte                    6.0265+-0.0194    ?     6.0318+-0.0154       ?
   bitops-bitwise-and                     4.6959+-0.0090          4.6926+-0.0115       
   bitops-nsieve-bits                     8.1722+-0.0079    ?     8.1799+-0.0126       ?
   controlflow-recursive                  3.6756+-0.0369    ?     3.6908+-0.0478       ?
   crypto-aes                            11.9426+-0.0967    !    12.1948+-0.0501       ! definitely 1.0211x slower
   crypto-md5                             3.9414+-0.0372    ?     3.9869+-0.0475       ? might be 1.0115x slower
   crypto-sha1                            3.2980+-0.0624    ?     3.3295+-0.0366       ?
   date-format-tofte                     13.9670+-0.1470         13.8177+-0.0931         might be 1.0108x faster
   date-format-xparb                     14.4586+-0.0742    !    15.2751+-0.1029       ! definitely 1.0565x slower
   math-cordic                           12.0426+-0.0313         12.0219+-0.0324       
   math-partial-sums                     15.0773+-0.0425    ?    15.0815+-0.0381       ?
   math-spectral-norm                     3.2355+-0.0164    !     3.3117+-0.0302       ! definitely 1.0236x slower
   regexp-dna                            11.0747+-0.1091    ?    11.1738+-0.0794       ?
   string-base64                          5.9331+-0.0116    !     5.9622+-0.0113       ! definitely 1.0049x slower
   string-fasta                          10.5769+-0.0180    ?    10.5942+-0.0236       ?
   string-tagcloud                       16.5458+-0.0281         16.5032+-0.0554       
   string-unpack-code                    26.9658+-0.1368    ?    27.0020+-0.1227       ?
   string-validate-input                  7.5801+-0.0093    !     7.6401+-0.0153       ! definitely 1.0079x slower

   <arithmetic> *                         9.2167+-0.0165    ?     9.2316+-0.0197       ? might be 1.0016x slower
   <geometric>                            7.5099+-0.0202    ?     7.5240+-0.0198       ? might be 1.0019x slower
   <harmonic>                             5.8681+-0.0295    ?     5.8895+-0.0252       ? might be 1.0036x slower

                                           TipOfTree32            InferDouble32                                  
V8:
   crypto                               121.1994+-0.2802    !   121.9700+-0.4194       ! definitely 1.0064x slower
   deltablue                            225.4175+-0.4504    ?   226.6870+-1.9381       ?
   earley-boyer                         142.2687+-1.3848    ?   142.8703+-1.2828       ?
   raytrace                              68.1709+-0.7045         67.8957+-0.2722       
   regexp                               155.7222+-0.3299        155.7170+-0.4948       
   richards                             241.0998+-1.0237        239.9587+-0.6381       
   splay                                116.5125+-1.7885    ?   117.7935+-0.7934       ? might be 1.0110x slower

   <arithmetic>                         152.9130+-0.4079    ?   153.2703+-0.4364       ? might be 1.0023x slower
   <geometric> *                        141.9020+-0.4275    ?   142.2777+-0.3381       ? might be 1.0026x slower
   <harmonic>                           130.7297+-0.4425    ?   131.0370+-0.2673       ? might be 1.0024x slower

                                           TipOfTree32            InferDouble32                                  
Kraken:
   ai-astar                             987.9276+-1.9873    ?   989.5875+-1.9862       ?
   audio-beat-detection                 503.8657+-0.3595    ^   440.5516+-2.3661       ^ definitely 1.1437x faster
   audio-dft                            445.7723+-3.3746        444.7101+-2.4471       
   audio-fft                            334.2702+-0.8098    ^   267.6838+-2.3788       ^ definitely 1.2488x faster
   audio-oscillator                     547.8174+-3.0797    ^   538.0074+-3.2711       ^ definitely 1.0182x faster
   imaging-darkroom                     501.9588+-4.9934    ^   470.3138+-4.7611       ^ definitely 1.0673x faster
   imaging-desaturate                   360.0111+-0.1014    ?   360.0147+-0.2404       ?
   imaging-gaussian-blur                970.4162+-1.3375    ^   842.5708+-1.1573       ^ definitely 1.1517x faster
   json-parse-financial                  88.0039+-0.5441    ?    88.6821+-0.2110       ?
   json-stringify-tinderbox             126.7914+-0.3683        126.4213+-0.2953       
   stanford-crypto-aes                  169.5269+-0.5386        168.6534+-0.7137       
   stanford-crypto-ccm                  156.5946+-0.8589    ^   155.1493+-0.5687       ^ definitely 1.0093x faster
   stanford-crypto-pbkdf2               315.6071+-0.5699        314.4535+-1.0214       
   stanford-crypto-sha256-iterative     133.4636+-1.6870        132.1102+-0.1116         might be 1.0102x faster

   <arithmetic> *                       403.0019+-0.5047    ^   381.3507+-0.4167       ^ definitely 1.0568x faster
   <geometric>                          313.5732+-0.5312    ^   300.3107+-0.3505       ^ definitely 1.0442x faster
   <harmonic>                           241.1390+-0.6709    ^   235.1872+-0.2786       ^ definitely 1.0253x faster

                                           TipOfTree32            InferDouble32                                  
All benchmarks:
   <arithmetic>                         147.9160+-0.1981    ^   141.5281+-0.1751       ^ definitely 1.0451x faster
   <geometric>                           35.3583+-0.0723    ^    34.9561+-0.0690       ^ definitely 1.0115x faster
   <harmonic>                            10.3471+-0.0510    ?    10.3808+-0.0435       ? might be 1.0033x slower

                                           TipOfTree32            InferDouble32                                  
Geomean of preferred means:
   <scaled-result>                       80.7774+-0.1386    ^    79.4167+-0.1330       ^ definitely 1.0171x faster

Sending VM builds to bigmac...
Running on bigmac...
376/376                                                            
Generating benchmark report at TipOfTree32_InferDouble32_SunSpiderV8Kraken_20111213_2248_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on bigmac.local (MacPro5,1).

VMs tested:
"TipOfTree32" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r102726)
"InferDouble32" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r102726)

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.

                                           TipOfTree32            InferDouble32                                  
SunSpider:
   3d-cube                                8.2414+-0.0801    ^     7.2376+-0.0233       ^ definitely 1.1387x faster
   3d-morph                              10.9362+-0.0424    ?    11.0593+-0.0810       ? might be 1.0113x slower
   3d-raytrace                            9.6896+-0.0356    ?     9.7039+-0.0162       ?
   access-binary-trees                    1.9407+-0.0195    ?     1.9451+-0.0104       ?
   access-fannkuch                        9.2441+-0.0445    !     9.3548+-0.0376       ! definitely 1.0120x slower
   access-nbody                           5.6954+-0.0084    !     5.7078+-0.0038       ! definitely 1.0022x slower
   access-nsieve                          3.1094+-0.0128    !     3.1316+-0.0081       ! definitely 1.0071x slower
   bitops-3bit-bits-in-byte               1.2828+-0.0196    ?     1.2960+-0.0200       ? might be 1.0102x slower
   bitops-bits-in-byte                    4.9782+-0.0149    ?     4.9922+-0.0135       ?
   bitops-bitwise-and                     3.8794+-0.0047          3.8460+-0.0465       
   bitops-nsieve-bits                     6.7766+-0.0145          6.7644+-0.0078       
   controlflow-recursive                  2.9983+-0.0049    !     3.0352+-0.0310       ! definitely 1.0123x slower
   crypto-aes                             9.7946+-0.0258    !    10.1624+-0.0387       ! definitely 1.0376x slower
   crypto-md5                             3.2590+-0.0139    ?     3.2878+-0.0228       ?
   crypto-sha1                            2.6971+-0.0330    !     2.7582+-0.0163       ! definitely 1.0226x slower
   date-format-tofte                     11.5669+-0.0824    ?    11.5862+-0.2859       ?
   date-format-xparb                     12.0758+-0.2460    ?    12.4899+-0.2827       ? might be 1.0343x slower
   math-cordic                            9.9287+-0.0269    ?     9.9486+-0.0311       ?
   math-partial-sums                     12.4587+-0.0131         12.4514+-0.0177       
   math-spectral-norm                     2.6819+-0.0034    !     2.7610+-0.0281       ! definitely 1.0295x slower
   regexp-dna                             9.1832+-0.0195          9.1677+-0.0094       
   string-base64                          4.8763+-0.0237    !     4.9144+-0.0081       ! definitely 1.0078x slower
   string-fasta                           8.7722+-0.0213    ?     8.7903+-0.0429       ?
   string-tagcloud                       13.7713+-0.0307         13.7011+-0.0400       
   string-unpack-code                    22.1844+-0.0827    ?    22.2783+-0.0601       ?
   string-validate-input                  6.2970+-0.0165          6.2906+-0.0152       

   <arithmetic> *                         7.6277+-0.0127    ?     7.6408+-0.0139       ? might be 1.0017x slower
   <geometric>                            6.2119+-0.0130    ?     6.2263+-0.0111       ? might be 1.0023x slower
   <harmonic>                             4.8473+-0.0203    ?     4.8735+-0.0170       ? might be 1.0054x slower

                                           TipOfTree32            InferDouble32                                  
V8:
   crypto                               100.5472+-0.3565    ?   101.0559+-0.3720       ?
   deltablue                            187.7118+-0.8009    ?   188.1846+-1.3139       ?
   earley-boyer                         116.7155+-0.4644    ?   117.6857+-0.8208       ?
   raytrace                              56.3113+-0.5766    ?    57.0172+-0.6416       ? might be 1.0125x slower
   regexp                               130.1576+-0.3513        130.1473+-0.2585       
   richards                             198.9660+-0.6000    ?   200.1853+-1.9956       ?
   splay                                 97.2906+-1.0036    ?    99.3742+-1.4491       ? might be 1.0214x slower

   <arithmetic>                         126.8143+-0.2814    !   127.6643+-0.4408       ! definitely 1.0067x slower
   <geometric> *                        117.6751+-0.2986    !   118.6074+-0.3939       ! definitely 1.0079x slower
   <harmonic>                           108.3714+-0.3583    !   109.3784+-0.4169       ! definitely 1.0093x slower

                                           TipOfTree32            InferDouble32                                  
Kraken:
   ai-astar                             881.5506+-12.6789   ?   892.2307+-10.8047      ? might be 1.0121x slower
   audio-beat-detection                 417.6802+-3.9360    ^   365.0161+-3.6568       ^ definitely 1.1443x faster
   audio-dft                            364.9573+-2.0129        361.5342+-2.3947       
   audio-fft                            274.0695+-0.2537    ^   219.2772+-0.4352       ^ definitely 1.2499x faster
   audio-oscillator                     449.9475+-2.2052    ^   442.0701+-3.3194       ^ definitely 1.0178x faster
   imaging-darkroom                     415.0468+-4.4894    ^   390.9574+-4.1853       ^ definitely 1.0616x faster
   imaging-desaturate                   297.4802+-0.2322        297.3128+-0.0707       
   imaging-gaussian-blur                801.7976+-1.2091    ^   696.0927+-0.3739       ^ definitely 1.1519x faster
   json-parse-financial                  71.7417+-0.1640    !    72.7052+-0.1677       ! definitely 1.0134x slower
   json-stringify-tinderbox             104.6179+-0.2561        104.1383+-0.2901       
   stanford-crypto-aes                  140.4939+-0.1132    ?   140.6970+-0.4771       ?
   stanford-crypto-ccm                  130.7869+-0.5467        129.8170+-0.6464       
   stanford-crypto-pbkdf2               261.9172+-0.9742        260.9615+-1.0844       
   stanford-crypto-sha256-iterative     108.2584+-0.1808    ?   108.3181+-0.1846       ?

   <arithmetic> *                       337.1676+-0.8505    ^   320.0806+-1.0325       ^ definitely 1.0534x faster
   <geometric>                          259.8860+-0.3624    ^   249.4294+-0.5060       ^ definitely 1.0419x faster
   <harmonic>                           198.6468+-0.2351    ^   194.3329+-0.2853       ^ definitely 1.0222x faster

                                           TipOfTree32            InferDouble32                                  
All benchmarks:
   <arithmetic>                         123.5397+-0.2540    ^   118.5838+-0.3125       ^ definitely 1.0418x faster
   <geometric>                           29.2752+-0.0451    ^    28.9905+-0.0480       ^ definitely 1.0098x faster
   <harmonic>                             8.5472+-0.0350    ?     8.5908+-0.0296       ? might be 1.0051x slower

                                           TipOfTree32            InferDouble32                                  
Geomean of preferred means:
   <scaled-result>                       67.1386+-0.0768    ^    66.1965+-0.1120       ^ definitely 1.0142x faster

[pizlo@nitroflex bencher]
Comment 7 Oliver Hunt 2011-12-13 23:08:03 PST
Comment on attachment 119157 [details]
the patch

r=me any impact on perf of http://people.xiph.org/~bens/route9/route9.html ?
Comment 8 Filip Pizlo 2011-12-13 23:17:02 PST
Landed in http://trac.webkit.org/changeset/102743
Comment 9 Filip Pizlo 2011-12-14 00:34:11 PST
(In reply to comment #7)
> (From update of attachment 119157 [details])
> r=me any impact on perf of http://people.xiph.org/~bens/route9/route9.html ?

Doesn't seem to affect it.