Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
lodash startsWith vs native startsWith
(version: 0)
Comparing performance of:
lodash.startsWith vs Native string.startsWith
Created:
4 years ago
by:
Registered User
Jump to the latest result
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sit amet ex tincidunt, venenatis lacus ut, rhoncus enim. Cras auctor mollis tortor, eu varius risus gravida egestas. Nam vitae erat malesuada, interdum ligula nec, lobortis dolor. Nunc nibh magna, hendrerit eget dui eu, consequat sagittis enim. Proin ac rutrum ligula. Nunc et nunc quis est consectetur interdum. Phasellus quis dapibus ligula, eget varius metus. Proin orci eros, dignissim nec malesuada ac, pretium non lorem. Donec a elementum nibh. Aliquam feugiat blandit lorem a congue. Donec mi arcu, luctus a pretium et, euismod a nisl. Donec laoreet sapien in felis volutpat consectetur. Donec sed justo quis augue tincidunt dictum. Sed elit justo, sodales eget ex id, rutrum congue tortor. Nunc vel arcu dolor. Mauris nulla libero, consequat non sollicitudin eu, tristique condimentum dui. Donec vulputate euismod libero, in rutrum nibh maximus ut. Sed nisi ex, efficitur at augue sed, imperdiet iaculis dolor. Nunc vehicula scelerisque nulla ut aliquet. Phasellus sit amet nisl vel est cursus pulvinar ut vel est. Mauris ac ligula condimentum, varius purus sed, cursus velit. Proin nisi eros, congue et urna at, ullamcorper ornare risus. Nullam sed enim ac nulla laoreet placerat. Aliquam erat volutpat. Nullam in metus sed augue suscipit vehicula sed at leo. Praesent nec ex dictum, luctus erat in, mollis est. Sed eget urna lectus. Quisque sit amet erat et enim varius tempus non sed ligula. Nulla porttitor erat lacus, sed posuere mi viverra nec. Curabitur vulputate blandit nibh. Morbi tristique orci velit. Pellentesque egestas pulvinar ante. Sed sed ullamcorper lacus, non elementum tellus. Quisque eget imperdiet mi. Integer placerat, nulla vitae molestie auctor, nunc purus faucibus nibh, rutrum cursus arcu quam eget diam. Integer et congue turpis. Nunc placerat augue ante, in sagittis elit ornare iaculis. Curabitur tristique aliquet tellus, eget luctus elit pellentesque at. Phasellus varius commodo libero ut scelerisque. Integer euismod nisl sit amet erat laoreet, non interdum purus dapibus. Donec lobortis vel mauris eget dapibus. Maecenas non neque vehicula, egestas massa quis, varius ipsum. Pellentesque finibus libero sem, a interdum purus maximus id. Phasellus facilisis erat vitae ex varius dignissim. Mauris at congue lectus, eu dictum risus. Integer mattis malesuada nibh, eget viverra odio porta sed. Sed dapibus odio in varius condimentum. Nam egestas erat et convallis tincidunt. Sed volutpat lorem at molestie vulputate. Integer sit amet ex vel augue dictum faucibus et vitae quam. Quisque et tristique urna, sit amet condimentum mauris. Sed ac ornare sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi tincidunt lectus quis tellus efficitur, in ullamcorper dolor posuere. Phasellus sodales rhoncus ipsum, quis accumsan nibh pulvinar quis. Nulla vel diam sit amet nunc dapibus fermentum.".split(' ');
Tests:
lodash.startsWith
var sum = 0; for (const word of lorem) { if (_.startsWith(word, 'se')) { sum += 1; } }
Native string.startsWith
var sum = 0; for (const word of lorem) { if (word.startsWith('se')) { sum += 1; } }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
lodash.startsWith
Native string.startsWith
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
2 years ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Browser/OS:
Chrome 123 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
lodash.startsWith
33531.8 Ops/sec
Native string.startsWith
853074.9 Ops/sec
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
Let's break down the benchmark and explain what's being tested. **Benchmark Overview** The benchmark compares the performance of two approaches to check if a string starts with a certain prefix: 1. **`_.startsWith(word, 'se')`**: This is a method from the Lodash library (imported via the `Html Preparation Code`) that checks if the first argument (`word`) starts with the second argument (`'se'`). 2. **`word.startsWith('se')`**: This is a native JavaScript function that checks if the string `word` starts with the prefix `'se'`. **Options Compared** The benchmark compares the execution speed of these two approaches for each iteration of the loop in the benchmark definition code. **Pros and Cons of Each Approach** 1. **`_.startsWith(word, 'se')` (Lodash method)**: * Pros: more concise and expressive code, potentially easier to read and maintain. * Cons: introduces an additional function call, which can lead to slower execution times due to the overhead of a JavaScript function call. 2. **`word.startsWith('se')` (Native function)**: * Pros: no additional function calls, potentially faster execution times since it's a native function that doesn't require creating a new context or calling a JavaScript function. * Cons: less concise and expressive code, which may make it harder to read and maintain. **Other Considerations** 1. **Library dependencies**: The Lodash method requires importing the Lodash library via the `Html Preparation Code`, which can introduce additional overhead due to the need to load and parse the library. 2. **Function call overhead**: As mentioned earlier, calling a JavaScript function can lead to slower execution times compared to native functions. **Special JS Feature or Syntax** In this benchmark, there is no special JavaScript feature or syntax being tested beyond what's standard for checking string starts with prefixes. **Alternative Approaches** If you want to improve the performance of the `_.startsWith` method, you could consider: * Caching the results of `_.startsWith` calls to avoid repeated function calls. * Using a more optimized implementation of the `_.startsWith` method, such as one that uses SIMD instructions or bit manipulation. For native functions like `word.startsWith('se')`, there aren't many alternatives, but you can try optimizing the code by: * Using a faster string comparison algorithm, such as using ASCII codes to compare characters. * Using a more efficient data structure, such as a trie or a suffix tree.
Related benchmarks:
Reduce w/ Lowercase vs. Magic Regex
lodash.uniq vs native Set
lodash some vs native array some
lodash size vs native Object.keys length vs JSON string
Comments
Confirm delete:
Do you really want to delete benchmark?