Bug 131418 - Optimize NaN sanitization
Summary: Optimize NaN sanitization
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 131419
Blocks:
  Show dependency treegraph
 
Reported: 2014-04-08 20:16 PDT by Filip Pizlo
Modified: 2014-04-08 21:24 PDT (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2014-04-08 20:16:07 PDT
...
Comment 1 Filip Pizlo 2014-04-08 20:44:46 PDT
If we eliminated all sanitization we would have a big speed-up:

Benchmark report for AsmBench on dethklok (MacBookPro9,1).

VMs tested:
"Baseline" at /Volumes/Data/pizlo/quartary/OpenSource/Baseline/WebKitBuild/Release/jsc
"NoNaNChecks" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r166994)

Collected 4 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.

                                 Baseline                NoNaNChecks                                    

bigfib.cpp                  596.5540+-5.2567     ?    598.2952+-18.0237       ?
cray.c                       36.8505+-0.6301           36.5445+-0.3884        
dry.c                       518.7787+-40.2963    ?    519.3938+-38.6616       ?
FloatMM.c                  1120.4211+-26.0505    ^    913.3167+-5.7435        ^ definitely 1.2268x faster
gcc-loops.cpp              1414.9705+-24.0548    ^   1293.9392+-7.2879        ^ definitely 1.0935x faster
n-body.c                   1562.3240+-9.1747     ^   1009.1730+-42.3639       ^ definitely 1.5481x faster
Quicksort.c                  55.3555+-2.1002     ?     56.1843+-3.2402        ? might be 1.0150x slower
stepanov_container.cpp     3866.9738+-34.0559    ^   3594.8812+-36.0217       ^ definitely 1.0757x faster
Towers.c                     45.6852+-3.5218           44.9310+-2.8141          might be 1.0168x faster

<arithmetic>               1024.2126+-7.6832     ^    896.2954+-7.0141        ^ definitely 1.1427x faster
<geometric> *               402.2503+-6.1556     ^    367.6326+-5.9729        ^ definitely 1.0942x faster
<harmonic>                  122.8986+-3.0728          121.3267+-3.6854          might be 1.0130x faster
Comment 2 Andrew Trick 2014-04-08 21:24:23 PDT
We will also get ~50% on cray. But I think that benchmark is not currently working. I'll submit a patch for it shortly.