Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package akka.cluster
- import java.security.MessageDigest
- import java.util.concurrent.TimeUnit
- import org.openjdk.jmh.annotations.{Benchmark, BenchmarkMode, Fork, Measurement, Mode, OutputTimeUnit, Param, State, Warmup, Scope => JmhScope}
- @Fork(2)
- @State(JmhScope.Benchmark)
- @BenchmarkMode(Array(Mode.Throughput))
- @Warmup(iterations = 5)
- @Measurement(iterations = 10)
- @OutputTimeUnit(TimeUnit.MILLISECONDS)
- class NodeHash {
- @Param(Array("j", "m", "h"))
- var value = ""
- def hashCurrent(name: String): String = {
- val digester = MessageDigest.getInstance("MD5")
- digester.update(name.getBytes("UTF-8"))
- digester.digest.map { h =>
- "%02x".format(0xFF & h)
- }.mkString
- }
- def hashProposed(name: String): String = {
- val digester = MessageDigest.getInstance("MD5")
- digester.update(name.getBytes("UTF-8"))
- val digest = digester.digest
- val ch = new Array[Char](digest.length * 2)
- var i = 0
- while (i < digest.length) {
- val h = digest(i)
- ch(i * 2) = Character.forDigit((h >> 4) & 0xF, 16)
- ch(i * 2 + 1) = Character.forDigit(h & 0xF, 16)
- i += 1
- }
- String.valueOf(ch)
- }
- @Benchmark
- def current: String = hashCurrent(value)
- @Benchmark
- def proposed: String = hashProposed(value)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement