• Sathya Gunasekaran's avatar
    [intl] Cache the last used formatter if possible · 4b139f76
    Sathya Gunasekaran authored
    Instead of caching only the default formatter, cache the last used
    formatter if possible.
    
    This is better because it's a common use case to create a formatter
    in a different language and reuse it a lot, rather than create
    several formatters in various languages.
    
    Running the following benchmark:
    ```
    let i = 0;
    
    function toLocaleString() {
      i++;
      return i.toLocaleString();
    }
    
    i = 0;
    function toLocaleStringWithLocale() {
      i++;
      return i.toLocaleString('en-US');
    }
    
    const functions = [toLocaleString, toLocaleStringWithLocale];
    
    for (const f of functions) {
      let start = performance.now();
      for (let i = 0; i < 10e5; i++) {
        f();
      }
      let end = performance.now();
      print(`${f.name}: ${end - start}`);
    }
    ```
    sees the following improvements:
    
    With this patch:
      toLocaleString: 384.292
      toLocaleStringWithLocale: 450.48900000000003
    
    Without this patch:
      toLocaleString: 341.952
      toLocaleStringWithLocale: 23439.694
    
    This a little over 50x improvement.
    
    Bug: chromium:926075
    Change-Id: I0e316e959c90243e175df985854832a7abddbf54
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2536461
    Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
    Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#71188}
    4b139f76
isolate.h 78.4 KB