Skip to content

Instantly share code, notes, and snippets.

@cbruegg
Created June 16, 2016 11:36
Show Gist options
  • Save cbruegg/1fb73a0cc8113212378f206f718f72ad to your computer and use it in GitHub Desktop.
Save cbruegg/1fb73a0cc8113212378f206f718f72ad to your computer and use it in GitHub Desktop.
val pattern = "abababababa"
val text = "abababa".repeat(1000)
val runs = 50
fun occTest(): Long {
// Warmup
repeat(5) {
text.occurrencesOf(pattern, ignoreCase = false, matchOverlapping = true).forEach { }
}
val startTime = System.currentTimeMillis()
repeat(runs) {
text.occurrencesOf(pattern, ignoreCase = false, matchOverlapping = true).forEach { }
}
val endTime = System.currentTimeMillis()
return (endTime - startTime)
}
fun indexOfTest(): Long {
// Warmup
val regex = Regex.fromLiteral(pattern)
repeat(5) {
for (i in 0..text.length - 1) {
text.indexOf(pattern, i) == i
}
}
val startTime = System.currentTimeMillis()
repeat(runs) {
for (i in 0..text.length - 1) {
text.indexOf(pattern, i) == i
}
}
val endTime = System.currentTimeMillis()
return (endTime - startTime)
}
fun regexTest(): Long {
// Warmup
val regex = Regex.fromLiteral(pattern)
repeat(5) {
for (i in 0..text.length - 1) {
regex.find(text, i)
}
}
val startTime = System.currentTimeMillis()
repeat(runs) {
for (i in 0..text.length - 1) {
regex.find(text, i)
}
}
val endTime = System.currentTimeMillis()
return (endTime - startTime)
}
fun main(args: Array<String>) {
val occ = occTest()
val reg = regexTest()
val idx = indexOfTest()
println("occ: $occ ms, regex: $reg ms, indexOf: $idx ms")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment