|  | // Copyright 2018 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 createSuiteWithWarmup( name, count, fn) { | 
|  | new BenchmarkSuite(name, [count], [ | 
|  | new Benchmark(name, true, false, 0, fn), | 
|  | ]); | 
|  | } | 
|  |  | 
|  | const inputs = [ | 
|  | 'I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n\u2603\uD83D\uDCA9\uFFFD', | 
|  | '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.', | 
|  | ]; | 
|  | const first = 'I'; | 
|  |  | 
|  | function helper(fn) { | 
|  | let sum = 0; | 
|  | for (const input of inputs) { | 
|  | sum += fn(input); | 
|  | } | 
|  | return sum; | 
|  | } | 
|  |  | 
|  | function startsWith(string) { | 
|  | return string.startsWith(first); | 
|  | } | 
|  |  | 
|  | function startsIndex(string) { | 
|  | return string[0] === first; | 
|  | } | 
|  |  | 
|  | function endsWith(string) { | 
|  | return string.endsWith(first); | 
|  | } | 
|  |  | 
|  | function endsIndex(string) { | 
|  | return string[string.length - 1] === first; | 
|  | } | 
|  |  | 
|  | createSuiteWithWarmup('startsWith', 1, () => helper(startsWith)); | 
|  | createSuiteWithWarmup('startsIndex', 1, () => helper(startsIndex)); | 
|  | createSuiteWithWarmup('endsWith', 1, () => helper(endsWith)); | 
|  | createSuiteWithWarmup('endsIndex', 1, () => helper(endsIndex)); |