summaryrefslogtreecommitdiff
path: root/deps/v8/test/js-perf-test/Strings/string-startswith.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/js-perf-test/Strings/string-startswith.js')
-rw-r--r--deps/v8/test/js-perf-test/Strings/string-startswith.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/Strings/string-startswith.js b/deps/v8/test/js-perf-test/Strings/string-startswith.js
new file mode 100644
index 0000000000..4b0379b3a3
--- /dev/null
+++ b/deps/v8/test/js-perf-test/Strings/string-startswith.js
@@ -0,0 +1,78 @@
+// Copyright 2019 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+function createSuite(name, count, fn) {
+ new BenchmarkSuite(name, [count], [new Benchmark(name, true, false, 0, fn)]);
+}
+
+const inputs = [
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
+ 'Integer eu augue suscipit, accumsan ipsum nec, sagittis sem.',
+ 'In vitae pellentesque dolor. Curabitur leo nunc, luctus vitae',
+ 'risus eget, fermentum hendrerit justo.',
+ 'hello'.repeat(1024),
+ 'h',
+ ''
+];
+const firsts = ['I', 'Integer', 'Lorem', 'risus', 'hello'];
+
+function simpleHelper() {
+ let sum = 0;
+ for (const input of inputs) {
+ for (const first of firsts) {
+ sum += input.startsWith(first);
+ }
+ }
+ return sum;
+}
+
+function consInputHelper() {
+ let sum = 0;
+ for (const inputOne of inputs) {
+ for (const inputTwo of inputs) {
+ for (const first of firsts) {
+ // Skip if the length is too small for %ConstructConsString
+ if (inputOne.length + inputTwo.length < 13) break;
+ sum += %ConstructConsString(inputOne, inputTwo).startsWith(first);
+ }
+ }
+ }
+ return sum;
+}
+
+function consFirstHelper() {
+ let sum = 0;
+ for (const input of inputs) {
+ for (const firstOne of firsts) {
+ for (const firstTwo of firsts) {
+ // Skip if the length is too small for %ConstructConsString
+ if (firstOne.length + firstTwo.length < 13) break;
+ sum += input.startsWith(%ConstructConsString(firstOne, firstTwo));
+ }
+ }
+ }
+ return sum;
+}
+
+function doubleConsHelper() {
+ let sum = 0;
+ for (const inputOne of inputs) {
+ for (const inputTwo of inputs) {
+ for (const firstOne of firsts) {
+ for (const firstTwo of firsts) {
+ // Skip if the length is too small for %ConstructConsString
+ if (inputOne.length + inputTwo.length < 13 || firstOne.length + firstTwo.length) break;
+ sum += % ConstructConsString(inputOne, inputTwo).startsWith(
+ % ConstructConsString(firstOne, firstTwo)
+ );
+ }
+ }
+ }
+ }
+}
+
+createSuite('DirectStringsDirectSearch', 1000, simpleHelper);
+createSuite('ConsStringsDirectSearch', 1000, consInputHelper);
+createSuite('DirectStringsConsSearch', 1000, consFirstHelper);
+createSuite('ConsStringsConsSearch', 1000, doubleConsHelper);