curreying function

   benchmark2("hllc")(10000000)(hcclcodeanddecode2)
    benchmark("hllc")(10000000)(hcclcodeanddecode)



  def hcclcodeanddecode() :Unit = {
    val hllc = new HLLCounter(14)
    hllc.add("adsfasdfawerwfadfs")
    val bytes1 = ByteBuffer.allocate(hllc.maxLength())
    hllc.writeRegisters(bytes1)
    val aa = bytes1.array
    val hllc2 = new HLLCounter(14)
    val t = hllc2.readRegisters(ByteBuffer.wrap(aa))
   // val count = hllc2.getCountEstimate
  }


  def hcclcodeanddecode2(x:String) :Unit = {
    val hllc = new HLLCounter(14)
    hllc.add("adsfasdfawerwfadfs")
    val bytes1 = ByteBuffer.allocate(hllc.maxLength())
    hllc.writeRegisters(bytes1)
    val aa = bytes1.array
    val hllc2 = new HLLCounter(14)
    val t = hllc2.readRegisters(ByteBuffer.wrap(aa))
    // val count = hllc2.getCountEstimate
  }




  def benchmark(name: String)(count: Int)(f )=>Unit) = {

    val b = System.currentTimeMillis()
    println(s"name $name")
    println(s"count $count")
    for (i <- 0 to count) f()
//  for (i <- 0 to count) f   f 不带括号, f 函数并不会执行

    val e = System.currentTimeMillis()
    println(s"cost ${e-b}")
  }



  def benchmark2(name: String)(count: Int)(f String)=>Unit) = {

    val b = System.currentTimeMillis()
    println(s"name $name")
    println(s"count $count")
    for (i <- 0 to count) f(name)
    val e = System.currentTimeMillis()
    println(s"cost ${e-b}")
  }




(f )=>Unit)  这种写法 OK

猜你喜欢

转载自lingzhi007.iteye.com/blog/2389082