Sunday, August 21, 2011

Simple hack to get response time

To use for example from the scala console in order to quickly get a function response time :

  def now=System.currentTimeMillis
  def duration[T](proc : =>T) = {
    val started = now
    val result = proc
    (now - started, result)
  }


Use case : Ordering a 100000 list of integer, built like as follow :

  val lst = (1 to 1000000).reverse.toList


Get / view response time :

  duration {lst.sortBy{x=>x}}


Or store the response time result :

  val (responsetime, _) = duration {lst.sortBy{x=>x}}


Since we're using a Java Virtual Machine, one measurement is not enough, we must make several iterations in order for the jvm to reach its steady state, and masks GarbageCollector border side effects on response times. We can use such approach :

  def howlong[T](proc : =>T, howmany:Long=5) {
    val durs = (1L to howmany) map {i =>
      val (dur,_) = duration {proc}
      dur
    }
    println("Duration : avg=%d min=%d max=%d all=%s".
         format(durs.sum/durs.size, durs.min, durs.max, durs))
  }


It gives, in milliseconds :

  scala> howlong {lst.sortBy{x=>x}}
  Duration : avg=670 min=524 max=903 all=Vector(816, 573, 524, 903, 534)


CONTEXT : Linux Gentoo / Scala 2.9.0 / Java 1.6.0_26

1 comment:

  1. để khi dễ các học viên khác.

    Tuy nhiên Nhạc Thành thành lập Phá Quân Bang thì mục đích không như vậy, cộng thêm sự hấp dẫn của Đan Dược, cho nên người của Phá Quân bang liền ra sức liều mạng.
    đồng tâm
    game mu
    cho thuê phòng trọ
    cho thuê phòng trọ
    nhac san cuc manh
    tư vấn pháp luật qua điện thoại
    văn phòng luật
    số điện thoại tư vấn luật
    dịch vụ thành lập doanh nghiệp
    http://we-cooking.com/
    chém gió
    Cuộc chém giết đã chính thức diễn ra, đột nhiên người của Phá Quân Bang hung hăng đánh tới, Hân Nhi và Nhạc Kiều cũng tiến lên.

    - Mọi người chạy đi.

    Không biết ai là người đầu tiên hô lên, sau đó mọi người bắt đầu chạy tứ tán.

    Nhạc Thành đánh giá toàn trường, mặc dù Phá Quân bang chỉ bằng một nửa đối phương nhưng sĩ khí đã tăng lên rất cao, không hề rơi vào thế hạ phong.

    - Khiếu Thiên ngươi lui ra để ta tiến tới.

    Nhạc Thành đi tới trước mặt Lương Hùng, bởi vì Nhạc Thành không hạ lệnh cho nên Khiếu Thiên Hổ cũng không giết hắn, chỉ là thương thế của Lương Hùng hiện tại cũng đã là không nhẹ .

    ReplyDelete