Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. package akka.cluster
  2.  
  3. import java.security.MessageDigest
  4. import java.util.concurrent.TimeUnit
  5.  
  6. import org.openjdk.jmh.annotations.{Benchmark, BenchmarkMode, Fork, Measurement, Mode, OutputTimeUnit, Param, State, Warmup, Scope => JmhScope}
  7.  
  8. @Fork(2)
  9. @State(JmhScope.Benchmark)
  10. @BenchmarkMode(Array(Mode.Throughput))
  11. @Warmup(iterations = 5)
  12. @Measurement(iterations = 10)
  13. @OutputTimeUnit(TimeUnit.MILLISECONDS)
  14. class NodeHash {
  15.  
  16. @Param(Array("j", "m", "h"))
  17. var value = ""
  18.  
  19. def hashCurrent(name: String): String = {
  20. val digester = MessageDigest.getInstance("MD5")
  21. digester.update(name.getBytes("UTF-8"))
  22. digester.digest.map { h =>
  23. "%02x".format(0xFF & h)
  24. }.mkString
  25. }
  26.  
  27. def hashProposed(name: String): String = {
  28. val digester = MessageDigest.getInstance("MD5")
  29. digester.update(name.getBytes("UTF-8"))
  30. val digest = digester.digest
  31. val ch = new Array[Char](digest.length * 2)
  32. var i = 0
  33. while (i < digest.length) {
  34. val h = digest(i)
  35. ch(i * 2) = Character.forDigit((h >> 4) & 0xF, 16)
  36. ch(i * 2 + 1) = Character.forDigit(h & 0xF, 16)
  37. i += 1
  38. }
  39. String.valueOf(ch)
  40. }
  41.  
  42. @Benchmark
  43. def current: String = hashCurrent(value)
  44.  
  45. @Benchmark
  46. def proposed: String = hashProposed(value)
  47.  
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement