| // Copyright 2014 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. |
| |
| new BenchmarkSuite('StringRepeat', [10], [ |
| new Benchmark('StringRepeat', false, false, 0, |
| Repeat, RepeatSetup, RepeatTearDown), |
| ]); |
| |
| new BenchmarkSuite('StringStartsWith', [10], [ |
| new Benchmark('StringStartsWith', false, false, 0, |
| StartsWith, WithSetup, WithTearDown), |
| ]); |
| |
| new BenchmarkSuite('StringEndsWith', [10], [ |
| new Benchmark('StringEndsWith', false, false, 0, |
| EndsWith, WithSetup, WithTearDown), |
| ]); |
| |
| new BenchmarkSuite('StringIncludes', [10], [ |
| new Benchmark('StringIncludes', false, false, 0, |
| Includes, IncludesSetup, WithTearDown), |
| ]); |
| |
| new BenchmarkSuite('StringFromCodePoint', [10000], [ |
| new Benchmark('StringFromCodePoint', false, false, 0, |
| FromCodePoint, FromCodePointSetup, FromCodePointTearDown), |
| ]); |
| |
| new BenchmarkSuite('StringCodePointAt', [1000], [ |
| new Benchmark('StringCodePointAt', false, false, 0, |
| CodePointAt, CodePointAtSetup, CodePointAtTearDown), |
| ]); |
| |
| new BenchmarkSuite('StringCodePointAtSum', [100000], [ |
| new Benchmark('StringCodePointAtSum', false, true, 3, |
| CodePointAtSum, CodePointAtSumSetup), |
| ]); |
| |
| |
| var result; |
| |
| var stringRepeatSource = "abc"; |
| |
| function RepeatSetup() { |
| result = undefined; |
| } |
| |
| function Repeat() { |
| result = stringRepeatSource.repeat(500); |
| } |
| |
| function RepeatTearDown() { |
| var expected = ""; |
| for (var i = 0; i < 1000; i++) { |
| expected += stringRepeatSource; |
| } |
| return result === expected; |
| } |
| |
| |
| var str; |
| var substr; |
| |
| function WithSetup() { |
| str = "abc".repeat(500); |
| substr = "abc".repeat(200); |
| result = undefined; |
| } |
| |
| function WithTearDown() { |
| return !!result; |
| } |
| |
| function StartsWith() { |
| result = str.startsWith(substr); |
| } |
| |
| function EndsWith() { |
| result = str.endsWith(substr); |
| } |
| |
| function IncludesSetup() { |
| str = "def".repeat(100) + "abc".repeat(100) + "qqq".repeat(100); |
| substr = "abc".repeat(100); |
| } |
| |
| function Includes() { |
| result = str.includes(substr); |
| } |
| |
| var MAX_CODE_POINT = 0xFFFFF; |
| const K = 1024; |
| |
| function FromCodePointSetup() { |
| result = new Array((MAX_CODE_POINT + 1) / K); |
| } |
| |
| function FromCodePoint() { |
| for (var i = 0; i <= MAX_CODE_POINT; i += K) { |
| result[i] = String.fromCodePoint(i); |
| } |
| } |
| |
| function FromCodePointTearDown() { |
| for (var i = 0; i <= MAX_CODE_POINT; i += K) { |
| if (i !== result[i].codePointAt(0)) return false; |
| } |
| return true; |
| } |
| |
| |
| var allCodePoints; |
| |
| function CodePointAtSetup() { |
| allCodePoints = new Array((MAX_CODE_POINT + 1) / K); |
| for (var i = 0; i <= MAX_CODE_POINT; i += K) { |
| allCodePoints = String.fromCodePoint(i); |
| } |
| result = undefined; |
| } |
| |
| function CodePointAt() { |
| result = 0; |
| for (var i = 0; i <= MAX_CODE_POINT; i += K) { |
| result += allCodePoints.codePointAt(i); |
| } |
| } |
| |
| function CodePointAtTearDown() { |
| return result === (MAX_CODE_POINT / K) * ((MAX_CODE_POINT / K) + 1) / 2; |
| } |
| |
| var payload; |
| |
| function CodePointAtSumSetup() { |
| payload = "abcdefghijklmnopqrstuvwxyz"; |
| for(var j = 0; j < 16; ++j) payload += payload; |
| } |
| |
| function CodePointAtSum() { |
| var c = 0; |
| for(j=payload.length-1; j >=0; --j) c+=payload.charCodeAt(j); |
| return c; |
| } |