Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Reduce with regex vs reduce with contains
(version: 2)
Comparing performance of:
Reduce with contains vs Reduce with regex
Created:
7 years ago
by:
Registered User
Jump to the latest result
HTML Preparation code:
<html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script> </head> <body> </body> </html>
Script Preparation code:
var obj = { "/": {x:[1], parent: null}, "/aaa": {x:[2], parent: "/"}, "/bbb": {x:[3], parent: "/"}, "/ccc": {x:[4], parent: "/"}, "/ddd": {x:[5], parent: "/"}, "/aaa/aaa2": {x:[6], parent: "/aaa/"}, "/bbb/bbb2": {x:[7], parent: "/bbb/"}, "/ccc/ccc2": {x:[8], parent: "/ccc/"}, "/ddd/ddd2": {x:[9], parent: "/ddd/"}, "/aaa/aaa2/aaa3": {x:[6], parent: "/aaa/aaa2/"}, "/bbb/bbb2/aaa3": {x:[7], parent: "/bbb/bbb2/"}, "/ccc/ccc2/aaa3": {x:[8], parent: "/ccc/ccc2/"}, "/ddd/ddd2/aaa3": {x:[9], parent: "/ddd/ddd2/"}, "/aaa1": {x:[2], parent: "/"}, "/bbb1": {x:[3], parent: "/"}, "/ccc1": {x:[4], parent: "/"}, "/ddd1": {x:[5], parent: "/"}, "/aaa1/aaa2": {x:[6], parent: "/aaa1/"}, "/bbb1/bbb2": {x:[7], parent: "/bbb1/"}, "/ccc1/ccc2": {x:[8], parent: "/ccc1/"}, "/ddd1/ddd2": {x:[9], parent: "/ddd1/"}, "/aaa1/aaa2/aaa3": {x:[6], parent: "/aaa1/aaa2/"}, "/bbb1/bbb2/aaa3": {x:[7], parent: "/bbb1/bbb2/"}, "/ccc1/ccc2/aaa3": {x:[8], parent: "/ccc1/ccc2/"}, "/ddd1/ddd2/aaa3": {x:[9], parent: "/ddd1/ddd2/"}, "/aaa2": {x:[2], parent: "/"}, "/bbb2": {x:[3], parent: "/"}, "/ccc2": {x:[4], parent: "/"}, "/ddd2": {x:[5], parent: "/"}, "/aaa2/aaa2": {x:[6], parent: "/aaa2/"}, "/bbb2/bbb2": {x:[7], parent: "/bbb2/"}, "/ccc2/ccc2": {x:[8], parent: "/ccc2/"}, "/ddd2/ddd2": {x:[9], parent: "/ddd2/"}, "/aaa2/aaa2/aaa3": {x:[6], parent: "/aaa2/aaa2/"}, "/bbb2/bbb2/aaa3": {x:[7], parent: "/bbb2/bbb2/"}, "/ccc2/ccc2/aaa3": {x:[8], parent: "/ccc2/ccc2/"}, "/ddd2/ddd2/aaa3": {x:[9], parent: "/ddd2/ddd2/"}, "/aaa3": {x:[2], parent: "/"}, "/bbb3": {x:[3], parent: "/"}, "/ccc3": {x:[4], parent: "/"}, "/ddd3": {x:[5], parent: "/"}, "/aaa3/aaa2": {x:[6], parent: "/aaa3/"}, "/bbb3/bbb2": {x:[7], parent: "/bbb3/"}, "/ccc3/ccc2": {x:[8], parent: "/ccc3/"}, "/ddd3/ddd2": {x:[9], parent: "/ddd3/"}, "/aaa3/aaa2/aaa3": {x:[6], parent: "/aaa3/aaa2/"}, "/bbb3/bbb2/aaa3": {x:[7], parent: "/bbb3/bbb2/"}, "/ccc3/ccc2/aaa3": {x:[8], parent: "/ccc3/ccc2/"}, "/ddd3/ddd2/aaa3": {x:[9], parent: "/ddd3/ddd2/"}, "/aaa4": {x:[2], parent: "/"}, "/bbb4": {x:[3], parent: "/"}, "/ccc4": {x:[4], parent: "/"}, "/ddd4": {x:[5], parent: "/"}, "/aaa4/aaa2": {x:[6], parent: "/aaa4/"}, "/bbb4/bbb2": {x:[7], parent: "/bbb4/"}, "/ccc4/ccc2": {x:[8], parent: "/ccc4/"}, "/ddd4/ddd2": {x:[9], parent: "/ddd4/"}, "/aaa4/aaa2/aaa3": {x:[6], parent: "/aaa4/aaa2/"}, "/bbb4/bbb2/aaa3": {x:[7], parent: "/bbb4/bbb2/"}, "/ccc4/ccc2/aaa3": {x:[8], parent: "/ccc4/ccc2/"}, "/ddd4/ddd2/aaa3": {x:[9], parent: "/ddd4/ddd2/"}, "/aaa5": {x:[2], parent: "/"}, "/bbb5": {x:[3], parent: "/"}, "/ccc5": {x:[4], parent: "/"}, "/ddd5": {x:[5], parent: "/"}, "/aaa5/aaa2": {x:[6], parent: "/aaa5/"}, "/bbb5/bbb2": {x:[7], parent: "/bbb5/"}, "/ccc5/ccc2": {x:[8], parent: "/ccc5/"}, "/ddd5/ddd2": {x:[9], parent: "/ddd5/"}, "/aaa5/aaa2/aaa3": {x:[6], parent: "/aaa5/aaa2/"}, "/bbb5/bbb2/aaa3": {x:[7], parent: "/bbb5/bbb2/"}, "/ccc5/ccc2/aaa3": {x:[8], parent: "/ccc5/ccc2/"}, "/ddd5/ddd2/aaa3": {x:[9], parent: "/ddd5/ddd2/"}, "/aaa6": {x:[2], parent: "/"}, "/bbb6": {x:[3], parent: "/"}, "/ccc6": {x:[4], parent: "/"}, "/ddd6": {x:[5], parent: "/"}, "/aaa6/aaa2": {x:[6], parent: "/aaa6/"}, "/bbb6/bbb2": {x:[7], parent: "/bbb6/"}, "/ccc6/ccc2": {x:[8], parent: "/ccc6/"}, "/ddd6/ddd2": {x:[9], parent: "/ddd6/"}, "/aaa6/aaa2/aaa3": {x:[6], parent: "/aaa6/aaa2/"}, "/bbb6/bbb2/aaa3": {x:[7], parent: "/bbb6/bbb2/"}, "/ccc6/ccc2/aaa3": {x:[8], parent: "/ccc6/ccc2/"}, "/ddd6/ddd2/aaa3": {x:[9], parent: "/ddd6/ddd2/"}, "/aaa7": {x:[2], parent: "/"}, "/bbb7": {x:[3], parent: "/"}, "/ccc7": {x:[4], parent: "/"}, "/ddd7": {x:[5], parent: "/"}, "/aaa7/aaa2": {x:[6], parent: "/aaa7/"}, "/bbb7/bbb2": {x:[7], parent: "/bbb7/"}, "/ccc7/ccc2": {x:[8], parent: "/ccc7/"}, "/ddd7/ddd2": {x:[9], parent: "/ddd7/"}, "/aaa7/aaa2/aaa3": {x:[6], parent: "/aaa7/aaa2/"}, "/bbb7/bbb2/aaa3": {x:[7], parent: "/bbb7/bbb2/"}, "/ccc7/ccc2/aaa3": {x:[8], parent: "/ccc7/ccc2/"}, "/ddd7/ddd2/aaa3": {x:[9], parent: "/ddd7/ddd2/"}, "/aaa8": {x:[2], parent: "/"}, "/bbb8": {x:[3], parent: "/"}, "/ccc8": {x:[4], parent: "/"}, "/ddd8": {x:[5], parent: "/"}, "/aaa8/aaa2": {x:[6], parent: "/aaa8/"}, "/bbb8/bbb2": {x:[7], parent: "/bbb8/"}, "/ccc8/ccc2": {x:[8], parent: "/ccc8/"}, "/ddd8/ddd2": {x:[9], parent: "/ddd8/"}, "/aaa8/aaa2/aaa3": {x:[6], parent: "/aaa8/aaa2/"}, "/bbb8/bbb2/aaa3": {x:[7], parent: "/bbb8/bbb2/"}, "/ccc8/ccc2/aaa3": {x:[8], parent: "/ccc8/ccc2/"}, "/ddd8/ddd2/aaa3": {x:[9], parent: "/ddd8/ddd2/"}, "/aaa9": {x:[2], parent: "/"}, "/bbb9": {x:[3], parent: "/"}, "/ccc9": {x:[4], parent: "/"}, "/ddd9": {x:[5], parent: "/"}, "/aaa9/aaa2": {x:[6], parent: "/aaa9/"}, "/bbb9/bbb2": {x:[7], parent: "/bbb9/"}, "/ccc9/ccc2": {x:[8], parent: "/ccc9/"}, "/ddd9/ddd2": {x:[9], parent: "/ddd9/"}, "/aaa9/aaa2/aaa3": {x:[6], parent: "/aaa9/aaa2/"}, "/bbb9/bbb2/aaa3": {x:[7], parent: "/bbb9/bbb2/"}, "/ccc9/ccc2/aaa3": {x:[8], parent: "/ccc9/ccc2/"}, "/ddd9/ddd2/aaa3": {x:[9], parent: "/ddd9/ddd2/"}, "/aaa0": {x:[2], parent: "/"}, "/bbb0": {x:[3], parent: "/"}, "/ccc0": {x:[4], parent: "/"}, "/ddd0": {x:[5], parent: "/"}, "/aaa0/aaa2": {x:[6], parent: "/aaa0/"}, "/bbb0/bbb2": {x:[7], parent: "/bbb0/"}, "/ccc0/ccc2": {x:[8], parent: "/ccc0/"}, "/ddd0/ddd2": {x:[9], parent: "/ddd0/"}, "/aaa0/aaa2/aaa3": {x:[6], parent: "/aaa0/aaa2/"}, "/bbb0/bbb2/aaa3": {x:[7], parent: "/bbb0/bbb2/"}, "/ccc0/ccc2/aaa3": {x:[8], parent: "/ccc0/ccc2/"}, "/ddd0/ddd2/aaa3": {x:[9], parent: "/ddd0/ddd2/"} } var searchTerm = "a"
Tests:
Reduce with contains
return _.reduce(obj, function(accumulator, node, key) { if (_.contains(key, searchTerm.toLowerCase())) { accumulator[key] = node; var nodeCopy = _.clone(node); while(path = nodeCopy.parentPath) { nodeCopy = obj(nodeCopy.parent); accumulator[path] = nodeCopy; } } return accumulator; }, {})
Reduce with regex
return _.reduce(obj, function(accumulator, node, key) { if (RegExp(searchTerm, "i").test(key)) { accumulator[key] = node; var nodeCopy = _.clone(node); while(path = nodeCopy.parentPath) { nodeCopy = obj(nodeCopy.parent); accumulator[path] = nodeCopy; } } return accumulator; }, {})
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
Reduce with contains
Reduce with regex
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
The test data consists of a nested object `obj` and two benchmark definitions for reducing the object using Lodash's `reduce` method. **Input Data:** ```json { "/ddd9/ddd2": {x:[9], parent: "/ddd9/"}, "/aaa9/aaa2/aaa3": {x:[6], parent: "/aaa9/aaa2/"}, "/bbb9/bbb2/aaa3": {x:[7], parent: "/bbb9/bbb2/"}, "/ccc9/ccc2/aaa3": {x:[8], parent: "/ccc9/ccc2/"}, "/ddd9/ddd2/aaa3": {x:[9], parent: "/ddd9/ddd2/"}, "/aaa0": {x:[2], parent: "/"}, "/bbb0": {x:[3], parent: "/"}, "/ccc0": {x:[4], parent: "/"}, "/ddd0": {x:[5], parent: "/"}, "/aaa0/aaa2": {x:[6], parent: "/aaa0/"}, "/bbb0/bbb2": {x:[7], parent: "/bbb0/"}, "/ccc0/ccc2": {x:[8], parent: "/ccc0/"}, "/ddd0/ddd2": {x:[9], parent: "/ddd0/"}, "/aaa0/aaa2/aaa3": {x:[6], parent: "/aaa0/aaa2/"}, "/bbb0/bbb2/aaa3": {x:[7], parent: "/bbb0/bbb2/"}, "/ccc0/ccc2/aaa3": {x:[8], parent: "/ccc0/ccc2/"}, "/ddd0/ddd2/aaa3": {x:[9], parent: "/ddd0/ddd2/"} } ``` **Benchmark Definitions:** 1. **Reduce with contains** ```javascript return _.reduce(obj, function(accumulator, node, key) { if (_.contains(key, searchTerm.toLowerCase())) { accumulator[key] = node; var nodeCopy = _.clone(node); while(path = nodeCopy.parentPath) { nodeCopy = obj(nodeCopy.parent); accumulator[path] = nodeCopy; } } return accumulator; }, {}); ``` 2. **Reduce with regex** ```javascript return _.reduce(obj, function(accumulator, node, key) { if (RegExp(searchTerm, "i").test(key)) { accumulator[key] = node; var nodeCopy = _.clone(node); while(path = nodeCopy.parentPath) { nodeCopy = obj(nodeCopy.parent); accumulator[path] = nodeCopy; } } return accumulator; }, {}); ``` **Latest Benchmark Results:** 1. **Reduce with contains** ```json { "RawUAString": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0", "Browser": "Firefox 109", "DevicePlatform": "Desktop", "OperatingSystem": "Windows", "ExecutionsPerSecond": 28195.673828125, "TestName": "Reduce with contains" } ``` 2. **Reduce with regex** ```json { "RawUAString": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0", "Browser": "Firefox 109", "DevicePlatform": "Desktop", "OperatingSystem": "Windows", "ExecutionsPerSecond": 18070.8984375, "TestName": "Reduce with regex" } ``` The test cases are designed to benchmark the performance of Lodash's `reduce` method under different conditions. The first benchmark defines a function that uses `_.contains` to check if a key contains the search term, while the second benchmark uses a regular expression to perform the same check. The latest benchmark results show that the **Reduce with contains** test case executed at an average rate of 28,195.67 executions per second, while the **Reduce with regex** test case executed at an average rate of 18,070.90 executions per second.
Related benchmarks:
get last element of path: split vs regex
Regex split vs Literal split
Regex vs split/join to extract middle value
Regex vs split/includes
Comments
Confirm delete:
Do you really want to delete benchmark?