转载

性能测试:Java 与 Golang 的对比

起因:

  • 作者本人我在知乎上看到很多人都在讨论这问题
  • 所以想做下纳秒级运算的测试

前置声明:

  • 双方都在 同一台电脑下 进行实验
  • 双方都在 程序内部 进行时间计算
    需要 读取文件 进行 解释执行
    不借助于 第三方工具 进行 性能测试
    
  • 双方 编译器版本当前当前最新版(2019-10-21)
    javac 13.0.1
    go version go1.13.3 windows/amd64
    
  • 双方 源码保证输出一致 ,并且 意义一致
  • 双方都 进行编译 ,并使用 相应的执行方法
  • 双方以 100次结果消耗时间平均值的整数对比值

Java:

源码:

class main {
  public static void main(String[] args) {
    long a = System.nanoTime();
    int i = 1;
    while (i < 10000000) {
      i += i;
      System.out.println("i: " + String.valueOf(i));
    }
    System.out.println("最终值: " + String.valueOf(i)); 
    System.out.println("时间: " + String.valueOf(System.nanoTime() - a) + " 纳秒");
  }
}

编译 & 执行:

javac main.java
java main

Golang:

源码:

package main

import "time"

func main() {
    a := time.Now().Nanosecond()
    i := 1
    for i < 10000000 {
        i += i
        println(`i:`, i)
    }
    println(`最终值:`, i)
    println(`时间:`, time.Now().Nanosecond()-a, `纳秒`)
}

编译 & 执行:

go build main.go
./main.exe

双方输出结果:

  • 因为是相同的,所以这里只放一份结果提供参考
i: 2
i: 4
i: 8
i: 16
i: 32
i: 64
i: 128
i: 256
i: 512
i: 1024
i: 2048
i: 4096
i: 8192
i: 16384
i: 32768
i: 65536
i: 131072
i: 262144
i: 524288
i: 1048576
i: 2097152
i: 4194304
i: 8388608
i: 16777216
最终值: 16777216

消耗时间:

Java:

时间: 13408033 纳秒 (0.013408033 秒)

Golang:

时间: 5316000 纳秒 (0.005316 秒)

消耗时间比:

Java : Golang ≈ 2.52 : 1

结论:

  • 消耗时间比 为根据
  • Golang执行效率(即性能)Java2.5倍
原文  https://studygolang.com/articles/24157
正文到此结束
Loading...