Tiny Performance benchmark for NSRegularExpression and google/re2
- A large files UTF8 File (~40Mb)
- Run on Release Mode
- MacbookPro 15" 2018 - 2.6 GHz 6-Core Intel Core i7
let tests = [TestCase(name: "URI", regex: "([a-zA-Z][a-zA-Z0-9]*)://([^ /]+)(/[^ ]*)?"),
TestCase(name: "Email", regex: "([^ @]+)@([^ @]+)"),
TestCase(name: "Date", regex: "([0-9][0-9]?)/([0-9][0-9]?)/([0-9][0-9]([0-9][0-9])?)"),
TestCase(name: "URI|Email", regex: "([a-zA-Z][a-zA-Z0-9]*)://([^ /]+)(/[^ ]*)?|([^ @]+)@([^ @]+)")]
tests.forEach { test in
measure(name: "RE2") {
let _ = RegexUtils.regex(withText: content, pattern: test.regex)
}
measure(name: "NSRegularExpression") {
let regex = NSRegularExpression(test.regex)
let _ = regex.matches(content)
}
}
Time: RE2 URI : 0.11845834599989757
Time: NSRegularExpression URI : 0.003419409999878553
-------------------
Time: RE2 Email : 0.13101682099932077
Time: NSRegularExpression Email : 7.166600062191719e-05
-------------------
Time: RE2 Date : 0.12773934000051668
Time: NSRegularExpression Date : 0.0019232759996157256
-------------------
Time: RE2 URI|Email : 0.13327939200007677
Time: NSRegularExpression URI|Email : 7.956900026329095e-05
-------------------