Last active
August 13, 2020 03:37
-
-
Save thomastay/ba3f2ea4b1e25fccab13d50fdb7db730 to your computer and use it in GitHub Desktop.
quick and dirty bench for mariomka bench
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
import os | |
import std/[times, monotimes, stats] | |
from regex import nil | |
from std/re import nil | |
proc measureNimRegex(data, pattern: string) = | |
var r: RunningStat | |
var matches: int | |
let patternRe = regex.re(pattern) | |
for i in 1..3: | |
matches = 0 | |
let start = getMonoTime() | |
for _ in regex.findAll(data, patternRe): | |
inc matches | |
r.push float((getMonoTime() - start).inMilliseconds) | |
echo "nim-regex: ", r.mean, " - " , matches | |
proc measureRe(data, pattern: string) = | |
var r: RunningStat | |
var matches: int | |
let patternRe = re.re(pattern) | |
for i in 1..3: | |
matches = 0 | |
let start = getMonoTime() | |
for _ in re.findAll(data, patternRe): | |
inc matches | |
r.push float((getMonoTime() - start).inMilliseconds) | |
echo "std/re: ", r.mean, " - " , matches | |
proc main() = | |
when declared(paramStr): | |
if paramCount() != 1: | |
echo "Usage: ./benchmark [filename]" | |
return | |
let file = open(paramStr(1)) | |
defer: close(file) | |
let data = file.readAll() | |
let emailStr = r"[\w\.+-]+@[\w\.-]+\.[\w\.-]+" | |
let URIStr = r"[\w]+://[^/\s?#]+[^\s?#]+(?:\?[^\s#]*)?(?:#[^\s]*)?" | |
let IPStr = r"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9])" | |
measureRe(data, emailStr) | |
# URI | |
measureRe(data, URIStr) | |
# IP | |
measureRe(data, IPStr) | |
measureNimRegex(data, emailStr) | |
# URI | |
measureNimRegex(data, URIStr) | |
# IP | |
measureNimRegex(data, IPStr) | |
when isMainModule: | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment