起因:
- 作者本人我在知乎上看到很多人都在讨论这问题
- 所以想做下纳秒级运算的测试
前置声明:
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
的 执行效率(即性能)
是 Java
的 2.5倍
原文
https://studygolang.com/articles/24157