<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [JSC] implement async functions proposal"
   href="https://bugs.webkit.org/show_bug.cgi?id=156147#c114">Comment # 114</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [JSC] implement async functions proposal"
   href="https://bugs.webkit.org/show_bug.cgi?id=156147">bug 156147</a>
              from <span class="vcard"><a class="email" href="mailto:caitp&#64;igalia.com" title="Caitlin Potter (:caitp) &lt;caitp&#64;igalia.com&gt;"> <span class="fn">Caitlin Potter (:caitp)</span></a>
</span></b>
        <pre>I tried a version with 2 changes:

`m_runtimeFlags` replaced with a single bool member, and flipping the order of operations (check if identifier === &quot;async&quot; before testing the flag), the results are not promising:

```
Benchmark report for Octane on EchoBeach (MacBookPro11,5).

VMs tested:
&quot;BeforePatch&quot; at /Users/caitp/git/WebKit/OldBuild/jsc
&quot;AfterPatch&quot; at /Users/caitp/git/WebKit/WebKitBuild/Release/jsc

Collected 100 samples per benchmark/VM, with 10 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.

                       BeforePatch                AfterPatch                                    

closure              0.73573+-0.02948    ?     0.73754+-0.02989       ?
jquery               6.68742+-0.05906    ?     6.81852+-0.07467       ? might be 1.0196x slower

&lt;geometric&gt;          2.20728+-0.04715    ?     2.23115+-0.04883       ? might be 1.0108x slower
```

---

Later in the day, I also tried a version which tokenizes &quot;async&quot; as a keyword, which also does not seem to do any better.

```
Benchmark report for Octane on EchoBeach (MacBookPro11,5).

VMs tested:
&quot;BeforePatch&quot; at /Users/caitp/git/WebKit/OldBuild/jsc
&quot;AfterPatch&quot; at /Users/caitp/git/WebKit/WebKitBuild/Release/jsc

Collected 100 samples per benchmark/VM, with 10 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.

                       BeforePatch                AfterPatch                                    

closure              0.73735+-0.02782    ?     0.75599+-0.03035       ? might be 1.0253x slower
jquery               6.95187+-0.05463    ?     7.07144+-0.07175       ? might be 1.0172x slower

&lt;geometric&gt;          2.25410+-0.04529    ?     2.30019+-0.04900       ? might be 1.0204x slower
```

And another one with fewer VM runs,

```
Benchmark report for Octane on EchoBeach (MacBookPro11,5).

VMs tested:
&quot;BeforePatch&quot; at /Users/caitp/git/WebKit/OldBuild/jsc
&quot;AfterPatch&quot; at /Users/caitp/git/WebKit/WebKitBuild/Release/jsc

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

                       BeforePatch                AfterPatch                                    

closure              0.73733+-0.04519          0.73413+-0.04667       
jquery               6.86110+-0.07219    ?     6.87968+-0.06205       ?

&lt;geometric&gt;          2.23916+-0.07172          2.23714+-0.07551         might be 1.0009x faster
```

which does not really indicate any serious improvements.

One thing we could do in the short term is add a compile-time flag to the async/await stuff (since the runtime flag stuff is kind of not really configurable in a the browser anyway yet, there isn't much difference between them anyway).

I'll do more real profiling on monday to see what the biggest problems are</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>