Last active
December 3, 2023 04:10
-
-
Save JobLeonard/4291cf2eba283340bde478dedd492473 to your computer and use it in GitHub Desktop.
regex vs string scan
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"title":"regex vs string scan","initialization":"\"use strict\";\nlet input = `foo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop!\nfoo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop! Foo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop!\n[hello world] Hello World! [hllo]\nfoo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop! Foo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop! foo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop! Foo bar baz bop boop bippity-bop bong. Bing bong bong bong ding dong blooooop!\n[weeep\nfoo bar baz bop [hello worlt] boop\nfoo bar baz bop boop\nfoo bar baz bop boop`;\n\n// increase by a factor of 1024\nfor (let i = 0; i < 10; i++) {\n input += input;\n}\n\n// Regex test\nfunction testRegex(input){\n\t\"use strict\";\n let thing = 0;\n\n let lines = input.split(/\\r\\n|\\r|\\n/);\n \tlet m;\n lines.forEach(function(line){\n // look for [xxxxx] yyyyyy\n if(m = /^\\[(.*)](.*)$/.exec(line)){\n if(m[1] === 'hello world'){\n thing++;\n }\n }\n });\n}\n\n// String scan test\nfunction testStringScan(input){\n \t\"use strict\";\n var thing = 0;\n\n var in_bracket = false;\n var bracket_start = 0;\n var i;\n for(i=0; i<input.length; i++){\n if(input[i] === '['){\n in_bracket = true;\n bracket_start = i + 1;\n continue;\n }\n if(in_bracket && input[i] === ']'){\n if(input.substring(bracket_start, i) === 'hello world'){\n thing++;\n }\n in_bracket = false;\n continue;\n }\n if(input[i] === '\\n'){\n in_bracket = false;\n }\n }\n}\n\n// charCodeAt string scan\nfunction testStringScanCC(input){\n\t\"use strict\";\n let thing = 0 | 0;\n\n let in_bracket = false;\n let bracket_start = 0 | 0;\n let cc = 0 | 0;\n const hw_match = Uint8Array.from('hello world'.split(\"\").map(char => char.charCodeAt(0)));\n\n for(let i=0; i<input.length; i++){\n cc = input.charCodeAt(i);\n if (in_bracket) {\n if (cc === 10) {//if(input[i] === '\\n'){\n in_bracket = false;\n continue;\n }\n if (cc === 93) {// if(input[i] === ']' && in_bracket){\n in_bracket = false;\n if (i - bracket_start !== hw_match.lenth) continue;\n for (let j = 0; j < hw_match.length; j++) {\n if (input.charCodeAt(bracket_start + j) !== hw_match[j]) continue;\n }\n thing++;\n continue;\n in_bracket = false;\n continue;\n }\n } else {\n if (cc === 91) {// if(input[i] === '['){\n in_bracket = true;\n bracket_start = i + 1;\n continue;\n }\n }\n }\n}\n","setup":"// runs before each test","tests":[{"name":"regex","code":"testRegex(input);","results":{"aborted":false,"count":75,"cycles":2,"hz":802.9057541579052,"stats":{"moe":0.00001482782805566901,"rme":1.1905348467560672,"sem":0.000007565218395749495,"deviation":0.000056612910586028413,"mean":0.0012454761904761899,"variance":3.2050216450216477e-9,"numSamples":56},"times":{"cycle":0.09341071428571424,"elapsed":5.809,"period":0.0012454761904761899,"timeStamp":1701576530570}},"platforms":{"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0":{"aborted":false,"count":75,"cycles":2,"hz":802.9057541579052,"stats":{"moe":0.00001482782805566901,"rme":1.1905348467560672,"sem":0.000007565218395749495,"deviation":0.000056612910586028413,"mean":0.0012454761904761899,"variance":3.2050216450216477e-9,"numSamples":56},"times":{"cycle":0.09341071428571424,"elapsed":5.809,"period":0.0012454761904761899,"timeStamp":1701576530570}}}},{"name":"string scan","code":"testStringScan(input)","results":{"aborted":false,"count":27,"cycles":3,"hz":329.0404755165581,"stats":{"moe":0.00002541397523223616,"rme":0.8362226495181017,"sem":0.00001296631389399804,"deviation":0.00010209685769824932,"mean":0.003039139784946237,"variance":1.042376835185657e-8,"numSamples":62},"times":{"cycle":0.0820567741935484,"elapsed":6.05,"period":0.003039139784946237,"timeStamp":1701576536384}},"platforms":{"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0":{"aborted":false,"count":27,"cycles":3,"hz":329.0404755165581,"stats":{"moe":0.00002541397523223616,"rme":0.8362226495181017,"sem":0.00001296631389399804,"deviation":0.00010209685769824932,"mean":0.003039139784946237,"variance":1.042376835185657e-8,"numSamples":62},"times":{"cycle":0.0820567741935484,"elapsed":6.05,"period":0.003039139784946237,"timeStamp":1701576536384}}}},{"name":"string scan, charCodeAt version","code":"testStringScanCC(input)","results":{"aborted":false,"count":55,"cycles":3,"hz":665.4061144418077,"stats":{"moe":0.000036419162664000675,"rme":2.423353351947685,"sem":0.000018581205440816672,"deviation":0.00014512385377209337,"mean":0.0015028416155130682,"variance":2.1060932933663944e-8,"numSamples":61},"times":{"cycle":0.08265628885321875,"elapsed":5.825,"period":0.0015028416155130682,"timeStamp":1701576542440}},"platforms":{"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0":{"aborted":false,"count":55,"cycles":3,"hz":665.4061144418077,"stats":{"moe":0.000036419162664000675,"rme":2.423353351947685,"sem":0.000018581205440816672,"deviation":0.00014512385377209337,"mean":0.0015028416155130682,"variance":2.1060932933663944e-8,"numSamples":61},"times":{"cycle":0.08265628885321875,"elapsed":5.825,"period":0.0015028416155130682,"timeStamp":1701576542440}}}}]} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment