關(guān)于性能

2018-02-24 15:59 更新

這里有一個(gè)性能測(cè)試網(wǎng)站

我對(duì)于網(wǎng)站測(cè)試的結(jié)果,我總結(jié)的情況就是兩點(diǎn).
1. 排在后面的基本都是動(dòng)態(tài)類(lèi)型語(yǔ)言,靜態(tài)類(lèi)型語(yǔ)言相對(duì)容易優(yōu)化到性能差不多的結(jié)果.
2. 同一個(gè)語(yǔ)言代碼寫(xiě)得好差產(chǎn)生的性能差異,遠(yuǎn)遠(yuǎn)比各種語(yǔ)言最好的代碼性能差異大.

總的來(lái)說(shuō),程序員越自由,程序性能就越差

不過(guò)也有反例,我們之前那個(gè)程序就是.

//java版本
public static void main(String[] args) {
    List<String> paramsList = new LinkedList<String>() {{
        add(">= 3");
        add("< 7");
    }};
    JavaRangeMatcher matcher = new JavaRangeMatcher(paramsList);
    Random random = new Random();
    long timeBegin = System.currentTimeMillis();
    for (int i = 0; i < 100000000; i++) {
        int input = random.nextInt() % 10;
        matcher.check(input);
    }
    long timeEnd = System.currentTimeMillis();
    System.out.println("java 消耗時(shí)間: " + (timeEnd - timeBegin) + " 毫秒");
    //java 消耗時(shí)間: 3263 毫秒
}
//scala版本
def main(args: Array[String]) {
  val requirements = Seq(">= 3", "< 7")
  val rangeMatcher = RangeMatcher(requirements)
  val timeBegin = System.currentTimeMillis()
  0 until 100000000 foreach {
    case _ =>
      rangeMatcher.check(Random.nextInt(10))
  }
  val timeEnd = System.currentTimeMillis()
  println(s"scala 消耗時(shí)間 ${timeEnd - timeBegin} 毫秒")
  //scala 消耗時(shí)間 2617 毫秒
}

想想這是為什么?

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)