From 93722dfe64a93d2259ce9fa7d04da2eab8b64e1c Mon Sep 17 00:00:00 2001 From: Rocky Madden Date: Sun, 16 Dec 2012 10:37:11 -0700 Subject: Changed group from org.hashtree.stringmetric to com.rockymadden.stringmetric. --- .../stringmetric/CaliperBenchmark.scala | 7 +++ .../rockymadden/stringmetric/CaliperRunner.scala | 7 +++ .../phonetic/MetaphoneAlgorithmBenchmark.scala | 28 +++++++++++ .../phonetic/MetaphoneMetricBenchmark.scala | 51 ++++++++++++++++++++ .../phonetic/NysiisAlgorithmBenchmark.scala | 28 +++++++++++ .../phonetic/NysiisMetricBenchmark.scala | 51 ++++++++++++++++++++ .../phonetic/RefinedNysiisAlgorithmBenchmark.scala | 28 +++++++++++ .../phonetic/RefinedNysiisMetricBenchmark.scala | 51 ++++++++++++++++++++ .../RefinedSoundexAlgorithmBenchmark.scala | 28 +++++++++++ .../phonetic/RefinedSoundexMetricBenchmark.scala | 51 ++++++++++++++++++++ .../phonetic/SoundexAlgorithmBenchmark.scala | 28 +++++++++++ .../phonetic/SoundexMetricBenchmark.scala | 51 ++++++++++++++++++++ .../similarity/DiceSorensenMetricBenchmark.scala | 51 ++++++++++++++++++++ .../similarity/HammingMetricBenchmark.scala | 51 ++++++++++++++++++++ .../similarity/JaroMetricBenchmark.scala | 51 ++++++++++++++++++++ .../similarity/JaroWinklerMetricBenchmark.scala | 51 ++++++++++++++++++++ .../similarity/LevenshteinMetricBenchmark.scala | 51 ++++++++++++++++++++ .../similarity/NGramAlgorithmBenchmark.scala | 31 +++++++++++++ .../similarity/NGramMetricBenchmark.scala | 54 ++++++++++++++++++++++ .../WeightedLevenshteinMetricBenchmark.scala | 51 ++++++++++++++++++++ .../hashtree/stringmetric/CaliperBenchmark.scala | 7 --- .../org/hashtree/stringmetric/CaliperRunner.scala | 7 --- .../phonetic/MetaphoneAlgorithmBenchmark.scala | 28 ----------- .../phonetic/MetaphoneMetricBenchmark.scala | 51 -------------------- .../phonetic/NysiisAlgorithmBenchmark.scala | 28 ----------- .../phonetic/NysiisMetricBenchmark.scala | 51 -------------------- .../phonetic/RefinedNysiisAlgorithmBenchmark.scala | 28 ----------- .../phonetic/RefinedNysiisMetricBenchmark.scala | 51 -------------------- .../RefinedSoundexAlgorithmBenchmark.scala | 28 ----------- .../phonetic/RefinedSoundexMetricBenchmark.scala | 51 -------------------- .../phonetic/SoundexAlgorithmBenchmark.scala | 28 ----------- .../phonetic/SoundexMetricBenchmark.scala | 51 -------------------- .../similarity/DiceSorensenMetricBenchmark.scala | 51 -------------------- .../similarity/HammingMetricBenchmark.scala | 51 -------------------- .../similarity/JaroMetricBenchmark.scala | 51 -------------------- .../similarity/JaroWinklerMetricBenchmark.scala | 51 -------------------- .../similarity/LevenshteinMetricBenchmark.scala | 51 -------------------- .../similarity/NGramAlgorithmBenchmark.scala | 31 ------------- .../similarity/NGramMetricBenchmark.scala | 54 ---------------------- .../WeightedLevenshteinMetricBenchmark.scala | 51 -------------------- 40 files changed, 800 insertions(+), 800 deletions(-) create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperRunner.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/HammingMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithmBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramMetricBenchmark.scala create mode 100755 core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/CaliperBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/CaliperRunner.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/HammingMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroWinklerMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/LevenshteinMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramAlgorithmBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramMetricBenchmark.scala delete mode 100755 core/source/benchmark/scala/org/hashtree/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala (limited to 'core/source/benchmark') diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperBenchmark.scala new file mode 100755 index 0000000..55a6238 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperBenchmark.scala @@ -0,0 +1,7 @@ +package com.rockymadden.stringmetric + +import com.google.caliper.SimpleBenchmark + +trait CaliperBenchmark extends SimpleBenchmark { + def run(reps: Int)(code: => Unit) = (0 until reps).foreach(i => code) +} \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperRunner.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperRunner.scala new file mode 100755 index 0000000..89f3ab9 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/CaliperRunner.scala @@ -0,0 +1,7 @@ +package com.rockymadden.stringmetric + +import com.google.caliper.{ Benchmark, Runner } + +abstract class CaliperRunner(private[this] val suite: java.lang.Class[_ <: Benchmark]) { + def main(args: Array[String]): Unit = Runner.main(suite, args) +} \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala new file mode 100755 index 0000000..f1e7c5a --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala @@ -0,0 +1,28 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.util.Random + +final class MetaphoneAlgorithmBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string: String = _ + var charArray: Array[Char] = _ + + override protected def setUp() { + string = Random.alphanumeric.filter(_ > '9').take(length).mkString + charArray = string.toCharArray + } + + def timeComputeWithCharArray(reps: Int) = run(reps) { + MetaphoneAlgorithm.compute(charArray) + } + + def timeComputeWithString(reps: Int) = run(reps) { + MetaphoneAlgorithm.compute(string) + } +} + +object MetaphoneAlgorithmBenchmark extends CaliperRunner(classOf[MetaphoneAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetricBenchmark.scala new file mode 100755 index 0000000..538a82f --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class MetaphoneMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.filter(_ > '9').take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + MetaphoneMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + MetaphoneMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + MetaphoneMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + MetaphoneMetric.compare(string1, string1) + } +} + +object MetaphoneMetricBenchmark extends CaliperRunner(classOf[MetaphoneMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala new file mode 100755 index 0000000..65dafe5 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala @@ -0,0 +1,28 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.util.Random + +final class NysiisAlgorithmBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string: String = _ + var charArray: Array[Char] = _ + + override protected def setUp() { + string = Random.alphanumeric.filter(_ > '9').take(length).mkString + charArray = string.toCharArray + } + + def timeComputeWithCharArray(reps: Int) = run(reps) { + NysiisAlgorithm.compute(charArray) + } + + def timeComputeWithString(reps: Int) = run(reps) { + NysiisAlgorithm.compute(string) + } +} + +object NysiisAlgorithmBenchmark extends CaliperRunner(classOf[NysiisAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisMetricBenchmark.scala new file mode 100755 index 0000000..9c2dfd4 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/NysiisMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class NysiisMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.filter(_ > '9').take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + NysiisMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + NysiisMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + NysiisMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + NysiisMetric.compare(string1, string1) + } +} + +object NysiisMetricBenchmark extends CaliperRunner(classOf[NysiisMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala new file mode 100755 index 0000000..2304e3e --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala @@ -0,0 +1,28 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.util.Random + +final class RefinedNysiisAlgorithmBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string: String = _ + var charArray: Array[Char] = _ + + override protected def setUp() { + string = Random.alphanumeric.filter(_ > '9').take(length).mkString + charArray = string.toCharArray + } + + def timeComputeWithCharArray(reps: Int) = run(reps) { + RefinedNysiisAlgorithm.compute(charArray) + } + + def timeComputeWithString(reps: Int) = run(reps) { + RefinedNysiisAlgorithm.compute(string) + } +} + +object RefinedNysiisAlgorithmBenchmark extends CaliperRunner(classOf[RefinedNysiisAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala new file mode 100755 index 0000000..08c9178 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class RefinedNysiisMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.filter(_ > '9').take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + RefinedNysiisMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + RefinedNysiisMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + RefinedNysiisMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + RefinedNysiisMetric.compare(string1, string1) + } +} + +object RefinedNysiisMetricBenchmark extends CaliperRunner(classOf[RefinedNysiisMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala new file mode 100755 index 0000000..7d4a016 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala @@ -0,0 +1,28 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.util.Random + +final class RefinedSoundexAlgorithmBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string: String = _ + var charArray: Array[Char] = _ + + override protected def setUp() { + string = Random.alphanumeric.filter(_ > '9').take(length).mkString + charArray = string.toCharArray + } + + def timeComputeWithCharArray(reps: Int) = run(reps) { + RefinedSoundexAlgorithm.compute(charArray) + } + + def timeComputeWithString(reps: Int) = run(reps) { + RefinedSoundexAlgorithm.compute(string) + } +} + +object RefinedSoundexAlgorithmBenchmark extends CaliperRunner(classOf[RefinedSoundexAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala new file mode 100755 index 0000000..c95804f --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class RefinedSoundexMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.filter(_ > '9').take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + RefinedSoundexMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + RefinedSoundexMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + RefinedSoundexMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + RefinedSoundexMetric.compare(string1, string1) + } +} + +object RefinedSoundexMetricBenchmark extends CaliperRunner(classOf[RefinedSoundexMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala new file mode 100755 index 0000000..eac0941 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala @@ -0,0 +1,28 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.util.Random + +final class SoundexAlgorithmBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string: String = _ + var charArray: Array[Char] = _ + + override protected def setUp() { + string = Random.alphanumeric.filter(_ > '9').take(length).mkString + charArray = string.toCharArray + } + + def timeComputeWithCharArray(reps: Int) = run(reps) { + SoundexAlgorithm.compute(charArray) + } + + def timeComputeWithString(reps: Int) = run(reps) { + SoundexAlgorithm.compute(string) + } +} + +object SoundexAlgorithmBenchmark extends CaliperRunner(classOf[SoundexAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexMetricBenchmark.scala new file mode 100755 index 0000000..190111e --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/phonetic/SoundexMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.phonetic + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class SoundexMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.filter(_ > '9').take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + SoundexMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + SoundexMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + SoundexMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + SoundexMetric.compare(string1, string1) + } +} + +object SoundexMetricBenchmark extends CaliperRunner(classOf[SoundexMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetricBenchmark.scala new file mode 100755 index 0000000..08559e4 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class DiceSorensenMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + DiceSorensenMetric.compare(charArray1, charArray2)(2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + DiceSorensenMetric.compare(string1, string2)(2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + DiceSorensenMetric.compare(charArray1, charArray1)(2) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + DiceSorensenMetric.compare(string1, string1)(2) + } +} + +object DiceSorensenMetricBenchmark extends CaliperRunner(classOf[DiceSorensenMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/HammingMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/HammingMetricBenchmark.scala new file mode 100755 index 0000000..095aeef --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/HammingMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class HammingMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + HammingMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + HammingMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + HammingMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + HammingMetric.compare(string1, string1) + } +} + +object HammingMetricBenchmark extends CaliperRunner(classOf[HammingMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroMetricBenchmark.scala new file mode 100755 index 0000000..0bb690a --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class JaroMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + JaroMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + JaroMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + JaroMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + JaroMetric.compare(string1, string1) + } +} + +object JaroMetricBenchmark extends CaliperRunner(classOf[JaroMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetricBenchmark.scala new file mode 100755 index 0000000..1e27733 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class JaroWinklerMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + JaroWinklerMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + JaroWinklerMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + JaroWinklerMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + JaroWinklerMetric.compare(string1, string1) + } +} + +object JaroWinklerMetricBenchmark extends CaliperRunner(classOf[JaroWinklerMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetricBenchmark.scala new file mode 100755 index 0000000..75cb46b --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class LevenshteinMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + LevenshteinMetric.compare(charArray1, charArray2) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + LevenshteinMetric.compare(string1, string2) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + LevenshteinMetric.compare(charArray1, charArray1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + LevenshteinMetric.compare(string1, string1) + } +} + +object LevenshteinMetricBenchmark extends CaliperRunner(classOf[LevenshteinMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithmBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithmBenchmark.scala new file mode 100755 index 0000000..eabdf55 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithmBenchmark.scala @@ -0,0 +1,31 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.util.Random + +final class NGramAlgorithmBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + @Param(Array("2", "3")) + var n: Int = _ + + var string: String = _ + var charArray: Array[Char] = _ + + override protected def setUp() { + string = Random.alphanumeric.take(length).mkString + charArray = string.toCharArray + } + + def timeComputeWithCharArray(reps: Int) = run(reps) { + NGramAlgorithm.compute(charArray)(n) + } + + def timeComputeWithString(reps: Int) = run(reps) { + NGramAlgorithm.compute(string)(n) + } +} + +object NGramAlgorithmBenchmark extends CaliperRunner(classOf[NGramAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramMetricBenchmark.scala new file mode 100755 index 0000000..74ce1ea --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/NGramMetricBenchmark.scala @@ -0,0 +1,54 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class NGramMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + @Param(Array("2", "3")) + var n: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + NGramMetric.compare(charArray1, charArray2)(n) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + NGramMetric.compare(string1, string2)(n) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + NGramMetric.compare(charArray1, charArray1)(n) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + NGramMetric.compare(string1, string1)(n) + } +} + +object NGramMetricBenchmark extends CaliperRunner(classOf[NGramMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala new file mode 100755 index 0000000..a096809 --- /dev/null +++ b/core/source/benchmark/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala @@ -0,0 +1,51 @@ +package com.rockymadden.stringmetric.similarity + +import com.google.caliper.Param +import com.rockymadden.stringmetric.{ CaliperBenchmark, CaliperRunner } +import scala.annotation.tailrec +import scala.util.Random + +final class WeightedLevenshteinMetricBenchmark extends CaliperBenchmark { + @Param(Array("0", "1", "2", "4", "8", "16")) + var length: Int = _ + + var string1: String = _ + var charArray1: Array[Char] = _ + var string2: String = _ + var charArray2: Array[Char] = _ + + override protected def setUp() { + @tailrec + def random(l: Int, ps: String = null): String = + if (l == 0) "" + else { + val s = Random.alphanumeric.take(l).mkString + + if (ps == null || s != ps) s + else random(l, ps) + } + + string1 = random(length) + string2 = random(length, string1) + charArray1 = string1.toCharArray + charArray2 = string2.toCharArray + } + + def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { + WeightedLevenshteinMetric.compare(charArray1, charArray2)(1, 1, 1) + } + + def timeCompareWithDifferentStrings(reps: Int) = run(reps) { + WeightedLevenshteinMetric.compare(string1, string2)(1, 1, 1) + } + + def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { + WeightedLevenshteinMetric.compare(charArray1, charArray1)(1, 1, 1) + } + + def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { + WeightedLevenshteinMetric.compare(string1, string1)(1, 1, 1) + } +} + +object WeightedLevenshteinMetricBenchmark extends CaliperRunner(classOf[WeightedLevenshteinMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/CaliperBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/CaliperBenchmark.scala deleted file mode 100755 index 47beaad..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/CaliperBenchmark.scala +++ /dev/null @@ -1,7 +0,0 @@ -package org.hashtree.stringmetric - -import com.google.caliper.SimpleBenchmark - -trait CaliperBenchmark extends SimpleBenchmark { - def run(reps: Int)(code: => Unit) = (0 until reps).foreach(i => code) -} \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/CaliperRunner.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/CaliperRunner.scala deleted file mode 100755 index ffb69e2..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/CaliperRunner.scala +++ /dev/null @@ -1,7 +0,0 @@ -package org.hashtree.stringmetric - -import com.google.caliper.{ Benchmark, Runner } - -abstract class CaliperRunner(private[this] val suite: java.lang.Class[_ <: Benchmark]) { - def main(args: Array[String]): Unit = Runner.main(suite, args) -} \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala deleted file mode 100755 index 27c93af..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneAlgorithmBenchmark.scala +++ /dev/null @@ -1,28 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.util.Random - -final class MetaphoneAlgorithmBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string: String = _ - var charArray: Array[Char] = _ - - override protected def setUp() { - string = Random.alphanumeric.filter(_ > '9').take(length).mkString - charArray = string.toCharArray - } - - def timeComputeWithCharArray(reps: Int) = run(reps) { - MetaphoneAlgorithm.compute(charArray) - } - - def timeComputeWithString(reps: Int) = run(reps) { - MetaphoneAlgorithm.compute(string) - } -} - -object MetaphoneAlgorithmBenchmark extends CaliperRunner(classOf[MetaphoneAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetricBenchmark.scala deleted file mode 100755 index bc75135..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class MetaphoneMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.filter(_ > '9').take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - MetaphoneMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - MetaphoneMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - MetaphoneMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - MetaphoneMetric.compare(string1, string1) - } -} - -object MetaphoneMetricBenchmark extends CaliperRunner(classOf[MetaphoneMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala deleted file mode 100755 index d922b6d..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisAlgorithmBenchmark.scala +++ /dev/null @@ -1,28 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.util.Random - -final class NysiisAlgorithmBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string: String = _ - var charArray: Array[Char] = _ - - override protected def setUp() { - string = Random.alphanumeric.filter(_ > '9').take(length).mkString - charArray = string.toCharArray - } - - def timeComputeWithCharArray(reps: Int) = run(reps) { - NysiisAlgorithm.compute(charArray) - } - - def timeComputeWithString(reps: Int) = run(reps) { - NysiisAlgorithm.compute(string) - } -} - -object NysiisAlgorithmBenchmark extends CaliperRunner(classOf[NysiisAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisMetricBenchmark.scala deleted file mode 100755 index 660f397..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/NysiisMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class NysiisMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.filter(_ > '9').take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - NysiisMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - NysiisMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - NysiisMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - NysiisMetric.compare(string1, string1) - } -} - -object NysiisMetricBenchmark extends CaliperRunner(classOf[NysiisMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala deleted file mode 100755 index 9303f9c..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisAlgorithmBenchmark.scala +++ /dev/null @@ -1,28 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.util.Random - -final class RefinedNysiisAlgorithmBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string: String = _ - var charArray: Array[Char] = _ - - override protected def setUp() { - string = Random.alphanumeric.filter(_ > '9').take(length).mkString - charArray = string.toCharArray - } - - def timeComputeWithCharArray(reps: Int) = run(reps) { - RefinedNysiisAlgorithm.compute(charArray) - } - - def timeComputeWithString(reps: Int) = run(reps) { - RefinedNysiisAlgorithm.compute(string) - } -} - -object RefinedNysiisAlgorithmBenchmark extends CaliperRunner(classOf[RefinedNysiisAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala deleted file mode 100755 index dd9c926..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class RefinedNysiisMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.filter(_ > '9').take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - RefinedNysiisMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - RefinedNysiisMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - RefinedNysiisMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - RefinedNysiisMetric.compare(string1, string1) - } -} - -object RefinedNysiisMetricBenchmark extends CaliperRunner(classOf[RefinedNysiisMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala deleted file mode 100755 index 5c13b0d..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexAlgorithmBenchmark.scala +++ /dev/null @@ -1,28 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.util.Random - -final class RefinedSoundexAlgorithmBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string: String = _ - var charArray: Array[Char] = _ - - override protected def setUp() { - string = Random.alphanumeric.filter(_ > '9').take(length).mkString - charArray = string.toCharArray - } - - def timeComputeWithCharArray(reps: Int) = run(reps) { - RefinedSoundexAlgorithm.compute(charArray) - } - - def timeComputeWithString(reps: Int) = run(reps) { - RefinedSoundexAlgorithm.compute(string) - } -} - -object RefinedSoundexAlgorithmBenchmark extends CaliperRunner(classOf[RefinedSoundexAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala deleted file mode 100755 index cceb128..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class RefinedSoundexMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.filter(_ > '9').take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - RefinedSoundexMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - RefinedSoundexMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - RefinedSoundexMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - RefinedSoundexMetric.compare(string1, string1) - } -} - -object RefinedSoundexMetricBenchmark extends CaliperRunner(classOf[RefinedSoundexMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala deleted file mode 100755 index 57a3925..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexAlgorithmBenchmark.scala +++ /dev/null @@ -1,28 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.util.Random - -final class SoundexAlgorithmBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string: String = _ - var charArray: Array[Char] = _ - - override protected def setUp() { - string = Random.alphanumeric.filter(_ > '9').take(length).mkString - charArray = string.toCharArray - } - - def timeComputeWithCharArray(reps: Int) = run(reps) { - SoundexAlgorithm.compute(charArray) - } - - def timeComputeWithString(reps: Int) = run(reps) { - SoundexAlgorithm.compute(string) - } -} - -object SoundexAlgorithmBenchmark extends CaliperRunner(classOf[SoundexAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexMetricBenchmark.scala deleted file mode 100755 index 2eeeeda..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/phonetic/SoundexMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.phonetic - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class SoundexMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.filter(_ > '9').take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - SoundexMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - SoundexMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - SoundexMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - SoundexMetric.compare(string1, string1) - } -} - -object SoundexMetricBenchmark extends CaliperRunner(classOf[SoundexMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetricBenchmark.scala deleted file mode 100755 index d55303d..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class DiceSorensenMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - DiceSorensenMetric.compare(charArray1, charArray2)(2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - DiceSorensenMetric.compare(string1, string2)(2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - DiceSorensenMetric.compare(charArray1, charArray1)(2) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - DiceSorensenMetric.compare(string1, string1)(2) - } -} - -object DiceSorensenMetricBenchmark extends CaliperRunner(classOf[DiceSorensenMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/HammingMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/HammingMetricBenchmark.scala deleted file mode 100755 index 69e9cfd..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/HammingMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class HammingMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - HammingMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - HammingMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - HammingMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - HammingMetric.compare(string1, string1) - } -} - -object HammingMetricBenchmark extends CaliperRunner(classOf[HammingMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroMetricBenchmark.scala deleted file mode 100755 index 06139d1..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class JaroMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - JaroMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - JaroMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - JaroMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - JaroMetric.compare(string1, string1) - } -} - -object JaroMetricBenchmark extends CaliperRunner(classOf[JaroMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroWinklerMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroWinklerMetricBenchmark.scala deleted file mode 100755 index bf405cd..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/JaroWinklerMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class JaroWinklerMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - JaroWinklerMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - JaroWinklerMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - JaroWinklerMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - JaroWinklerMetric.compare(string1, string1) - } -} - -object JaroWinklerMetricBenchmark extends CaliperRunner(classOf[JaroWinklerMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/LevenshteinMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/LevenshteinMetricBenchmark.scala deleted file mode 100755 index 6ff47f1..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/LevenshteinMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class LevenshteinMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - LevenshteinMetric.compare(charArray1, charArray2) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - LevenshteinMetric.compare(string1, string2) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - LevenshteinMetric.compare(charArray1, charArray1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - LevenshteinMetric.compare(string1, string1) - } -} - -object LevenshteinMetricBenchmark extends CaliperRunner(classOf[LevenshteinMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramAlgorithmBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramAlgorithmBenchmark.scala deleted file mode 100755 index 9bef2fa..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramAlgorithmBenchmark.scala +++ /dev/null @@ -1,31 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.util.Random - -final class NGramAlgorithmBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - @Param(Array("2", "3")) - var n: Int = _ - - var string: String = _ - var charArray: Array[Char] = _ - - override protected def setUp() { - string = Random.alphanumeric.take(length).mkString - charArray = string.toCharArray - } - - def timeComputeWithCharArray(reps: Int) = run(reps) { - NGramAlgorithm.compute(charArray)(n) - } - - def timeComputeWithString(reps: Int) = run(reps) { - NGramAlgorithm.compute(string)(n) - } -} - -object NGramAlgorithmBenchmark extends CaliperRunner(classOf[NGramAlgorithmBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramMetricBenchmark.scala deleted file mode 100755 index 2064d3b..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/NGramMetricBenchmark.scala +++ /dev/null @@ -1,54 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class NGramMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - @Param(Array("2", "3")) - var n: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - NGramMetric.compare(charArray1, charArray2)(n) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - NGramMetric.compare(string1, string2)(n) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - NGramMetric.compare(charArray1, charArray1)(n) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - NGramMetric.compare(string1, string1)(n) - } -} - -object NGramMetricBenchmark extends CaliperRunner(classOf[NGramMetricBenchmark]) \ No newline at end of file diff --git a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala b/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala deleted file mode 100755 index 1ded477..0000000 --- a/core/source/benchmark/scala/org/hashtree/stringmetric/similarity/WeightedLevenshteinMetricBenchmark.scala +++ /dev/null @@ -1,51 +0,0 @@ -package org.hashtree.stringmetric.similarity - -import com.google.caliper.Param -import org.hashtree.stringmetric.{ CaliperBenchmark, CaliperRunner } -import scala.annotation.tailrec -import scala.util.Random - -final class WeightedLevenshteinMetricBenchmark extends CaliperBenchmark { - @Param(Array("0", "1", "2", "4", "8", "16")) - var length: Int = _ - - var string1: String = _ - var charArray1: Array[Char] = _ - var string2: String = _ - var charArray2: Array[Char] = _ - - override protected def setUp() { - @tailrec - def random(l: Int, ps: String = null): String = - if (l == 0) "" - else { - val s = Random.alphanumeric.take(l).mkString - - if (ps == null || s != ps) s - else random(l, ps) - } - - string1 = random(length) - string2 = random(length, string1) - charArray1 = string1.toCharArray - charArray2 = string2.toCharArray - } - - def timeCompareWithDifferentCharArrays(reps: Int) = run(reps) { - WeightedLevenshteinMetric.compare(charArray1, charArray2)(1, 1, 1) - } - - def timeCompareWithDifferentStrings(reps: Int) = run(reps) { - WeightedLevenshteinMetric.compare(string1, string2)(1, 1, 1) - } - - def timeCompareWithIdenticalCharArrays(reps: Int) = run(reps) { - WeightedLevenshteinMetric.compare(charArray1, charArray1)(1, 1, 1) - } - - def timeCompareWithIdenticalStrings(reps: Int) = run(reps) { - WeightedLevenshteinMetric.compare(string1, string1)(1, 1, 1) - } -} - -object WeightedLevenshteinMetricBenchmark extends CaliperRunner(classOf[WeightedLevenshteinMetricBenchmark]) \ No newline at end of file -- cgit v1.2.3