性能测试:Java 与 Golang 的对比

aside section ._1OhGeD · · 6359 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

起因:


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

前置声明:


  • 双方都在 同一台电脑下 进行实验
  • 双方都在 程序内部 进行时间计算
    • 实验中有一方 需要 读取文件 进行 解释执行
    • 公平起见,不借助于 第三方工具 进行 性能测试
  • 双方 编译器版本当前当前最新版(2019-10-21)
    • Java 编译器版本:javac 13.0.1
    • Golang 编译器版本: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倍

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section ._1OhGeD

查看原文:性能测试:Java 与 Golang 的对比

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6359 次点击  
加入收藏 微博
2 回复  |  直到 2019-10-23 16:52:39
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传