Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
String .search vs .includes
(version: 1)
Comparing performance of:
.search vs .includes
Created:
one year ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<!--your preparation HTML code goes here-->
Script Preparation code:
/*your preparation JavaScript code goes here To execute async code during the script preparation, wrap it as function globalMeasureThatScriptPrepareFunction, example:*/ async function globalMeasureThatScriptPrepareFunction() { // This function is optional, feel free to remove it. // await someThing(); }
Tests:
.search
const a = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquet massa non fermentum bibendum. In elementum nunc vitae elit vehicula iaculis. Curabitur sit amet ipsum ut arcu pharetra fringilla et ac eros. Donec metus ligula, auctor quis molestie a, eleifend dapibus erat. Nunc risus nisi, lacinia at semper non, lacinia non nibh. Nulla facilisi. Nullam sodales suscipit luctus. Integer pharetra eleifend risus, a tristique velit iaculis vitae. Curabitur eget neque vitae metus vulputate finibus. Mauris auctor, sapien nec sagittis luctus, ante metus faucibus nibh, vel placerat ex sem id massa. Praesent blandit varius ultrices. Sed accumsan mi in odio gravida luctus ac at lacus. Duis convallis enim eget nulla mattis semper. In semper enim id placerat volutpat. Maecenas blandit sodales fringilla. Curabitur blandit nec turpis ut vehicula. Aenean fermentum sodales tellus vitae congue. Curabitur viverra ut magna id ultricies. Proin sit amet accumsan odio. Curabitur malesuada ex eget turpis sollicitudin, non interdum metus tincidunt. Donec at augue interdum ipsum dictum cursus sit amet sit amet turpis. Aenean nibh libero, euismod eu erat vel, vestibulum rhoncus augue. Praesent eu pharetra nisl, ac ultricies nisi. Sed nec nulla purus. Nulla cursus aliquam viverra. Curabitur vitae lorem mattis, dignissim mi pharetra, aliquam urna. Nulla sodales mauris eget augue egestas, id iaculis orci rhoncus. Quisque velit lacus, blandit at pellentesque id, ullamcorper non massa. Ut pulvinar neque sit amet cursus ullamcorper. Curabitur urna est, pharetra nec massa et, luctus semper sem. Phasellus vitae quam mi. Proin vulputate, libero vitae tempor accumsan, justo diam pulvinar ipsum, quis rhoncus elit velit vel eros. Sed vehicula, leo non accumsan malesuada, mi libero laoreet nulla, ut porttitor magna magna egestas mauris. Nullam a gravida diam. Ut sit amet imperdiet arcu. Proin ex ante, tincidunt luctus porttitor in, fermentum et ligula. Nulla cursus, tortor id varius rhoncus, purus odio euismod lectus, ut tincidunt est ex in lacus. Morbi viverra nisl eget purus sodales dignissim. Duis et nibh velit. Sed mauris sapien, commodo sit amet neque sit amet, commodo ultricies sem. Nam feugiat faucibus mollis. Pellentesque vitae massa interdum, tempor odio ut, elementum ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras in tincidunt risus. Maecenas pulvinar, erat id luctus malesuada, ligula purus finibus risus, a pellentesque elit mi in sem. Morbi molestie vestibulum justo, eget pulvinar ante dapibus vel. Proin finibus est nec tristique malesuada. Nullam mollis mi augue, a molestie orci venenatis ac. Donec mollis lectus a orci facilisis finibus. zzz' a.search('zzz')
.includes
const a = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquet massa non fermentum bibendum. In elementum nunc vitae elit vehicula iaculis. Curabitur sit amet ipsum ut arcu pharetra fringilla et ac eros. Donec metus ligula, auctor quis molestie a, eleifend dapibus erat. Nunc risus nisi, lacinia at semper non, lacinia non nibh. Nulla facilisi. Nullam sodales suscipit luctus. Integer pharetra eleifend risus, a tristique velit iaculis vitae. Curabitur eget neque vitae metus vulputate finibus. Mauris auctor, sapien nec sagittis luctus, ante metus faucibus nibh, vel placerat ex sem id massa. Praesent blandit varius ultrices. Sed accumsan mi in odio gravida luctus ac at lacus. Duis convallis enim eget nulla mattis semper. In semper enim id placerat volutpat. Maecenas blandit sodales fringilla. Curabitur blandit nec turpis ut vehicula. Aenean fermentum sodales tellus vitae congue. Curabitur viverra ut magna id ultricies. Proin sit amet accumsan odio. Curabitur malesuada ex eget turpis sollicitudin, non interdum metus tincidunt. Donec at augue interdum ipsum dictum cursus sit amet sit amet turpis. Aenean nibh libero, euismod eu erat vel, vestibulum rhoncus augue. Praesent eu pharetra nisl, ac ultricies nisi. Sed nec nulla purus. Nulla cursus aliquam viverra. Curabitur vitae lorem mattis, dignissim mi pharetra, aliquam urna. Nulla sodales mauris eget augue egestas, id iaculis orci rhoncus. Quisque velit lacus, blandit at pellentesque id, ullamcorper non massa. Ut pulvinar neque sit amet cursus ullamcorper. Curabitur urna est, pharetra nec massa et, luctus semper sem. Phasellus vitae quam mi. Proin vulputate, libero vitae tempor accumsan, justo diam pulvinar ipsum, quis rhoncus elit velit vel eros. Sed vehicula, leo non accumsan malesuada, mi libero laoreet nulla, ut porttitor magna magna egestas mauris. Nullam a gravida diam. Ut sit amet imperdiet arcu. Proin ex ante, tincidunt luctus porttitor in, fermentum et ligula. Nulla cursus, tortor id varius rhoncus, purus odio euismod lectus, ut tincidunt est ex in lacus. Morbi viverra nisl eget purus sodales dignissim. Duis et nibh velit. Sed mauris sapien, commodo sit amet neque sit amet, commodo ultricies sem. Nam feugiat faucibus mollis. Pellentesque vitae massa interdum, tempor odio ut, elementum ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras in tincidunt risus. Maecenas pulvinar, erat id luctus malesuada, ligula purus finibus risus, a pellentesque elit mi in sem. Morbi molestie vestibulum justo, eget pulvinar ante dapibus vel. Proin finibus est nec tristique malesuada. Nullam mollis mi augue, a molestie orci venenatis ac. Donec mollis lectus a orci facilisis finibus. zzz' a.includes('zzz')
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
.search
.includes
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 18_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/134.0.6998.99 Mobile/15E148 Safari/604.1
Browser/OS:
Chrome Mobile iOS 134 on iOS 18.3.1
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
.search
2655861.5 Ops/sec
.includes
9020325.0 Ops/sec
Autogenerated LLM Summary
(model
gpt-4o-mini
, generated one year ago):
The benchmark defined in the provided JSON assesses the performance of two different string search methods in JavaScript: `.search()` and `.includes()`. Both methods are part of the JavaScript String prototype, and they are used to determine if a particular substring exists within a longer string. ### Comparison of the Options 1. **`.search()` Method**: - **Usage**: The `.search()` method takes a regular expression or a string as an argument. It returns the index of the first match of the given pattern, or `-1` if no match is found. - **Advantages**: - Can utilize regular expressions, allowing for complex pattern matching. - Suitable for more advanced search needs where regex capabilities are beneficial. - **Disadvantages**: - Generally slower than `.includes()`, especially with simple substring searches because of the overhead of regex processing. - Requires familiarity with regular expressions to leverage its full potential. 2. **`.includes()` Method**: - **Usage**: The `.includes()` method checks if a string contains the specified substring and returns a boolean (`true` or `false`). - **Advantages**: - Simplicity: It's straightforward and intuitive to use for basic substring checks. - Performance: Typically faster for basic substring searches, as it does not involve the regex engine. - **Disadvantages**: - Less flexible than `.search()`. It cannot perform complex pattern matching. - Can only check for direct substring occurrences, which may not suffice when patterns are required. ### Benchmark Results The benchmarking results show notable differences in performance between the two methods: - `.includes()` recorded an impressive execution rate of **177,978,080.0** executions per second. - Conversely, `.search()` performed significantly slower at **1,853,649.5** executions per second. This stark contrast in execution speed highlights the efficiency of `.includes()` for straightforward substring searches. ### Other Considerations - **Use Cases**: The choice between `.search()` and `.includes()` depends largely on the specific requirements of the task at hand. For quick checks of existence without the need for pattern matching, `.includes()` is preferable. However, if there’s a need for regex features—like searching for patterns, character classes, etc.—then `.search()` is indispensable despite its performance cost. - **Alternatives**: Aside from `.search()` and `.includes()`, other string manipulation methods could also be considered for certain applications, though they may not directly serve the same purpose: - **`String.indexOf()`**: This method returns the first index at which a specified substring can be found, or `-1` if not found. It offers a compromise between the two methods, being more performant than `.search()` while not being as convenient as `.includes()`. - **Regular Expressions**: For more complex searches or replacements, different regex methods (like `.match()` or `.replace()`) might be considered, but they also come with performance penalties. In conclusion, the benchmark effectively showcases the practical differences in performance between `.search()` and `.includes()`, assisting developers in making informed decisions based on their specific string searching needs in JavaScript.
Related benchmarks:
closest comparision
closest comparision 2
Assigning new variable
test cross_domain
Benchmark GTM
object emptyness big object
Test array concat
213find vs findIndex vs some (Array prototype methods)
Luxon vs
Comments
Confirm delete:
Do you really want to delete benchmark?