-
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: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#71188}
4b139f76