简单的性能测试说明为什么Go比Java快?

栏目: Go · 发布时间: 5年前

内容简介:本次小测试并不是试图说明Go是Java的替代,Go lang和Java本就不是实现相同类型任务的语言 : Java是企业开发语言,而Go是系统编程语言。我的系统配置是16 GB RAM,Intel(R)Core(TM)i7-8550U CPU 2.00GHz和500 GB SSD。我只是使用Go和Java语言编写了一个阶乘程序,并为各种输入创建了一个分析表和时间表。

本次小测试并不是试图说明 GoJava 的替代,Go lang和Java本就不是实现相同类型任务的语言 : Java是企业开发语言,而Go是系统编程语言。

我的系统配置是16 GB RAM,Intel(R)Core(TM)i7-8550U CPU 2.00GHz和500 GB SSD。

我只是使用Go和Java语言编写了一个阶乘程序,并为各种输入创建了一个分析表和时间表。

Go代码:

<b>package</b> main

<b>import</b> (
    <font>"fmt"</font><font>
    </font><font>"time"</font><font>
    </font><font>"math/big"</font><font>
)

func main(){
    
    allInputs := [5]<b>int</b>64{10000, 50000, 100000, 500000, 1000000}
    
    <b>var</b> i <b>int</b> = 1
    <b>for</b> i=0;i<len(allInputs);i++ {

        <b>var</b> before = GetTimeStamp()

        <b>var</b> factorial *big.Int = big.NewInt(1)
        <b>var</b> j <b>int</b>64 = 1
        <b>for</b> j=1; j<=allInputs[i]; j++ {
            factorial  = factorial.Mul(factorial,big.NewInt(j))
        }
        <b>var</b> after = GetTimeStamp()
        <b>var</b> elapsedTime = after - before
        fmt.Println(</font><font>"Elapsed Time for %s is %s"</font><font>,allInputs[i],elapsedTime)
    }
}

func GetTimeStamp() <b>int</b>64 {
    <b>return</b> time.Now().UnixNano() / <b>int</b>64(time.Millisecond)
}
</font>

输出:

Output:
Factorial   Time To calculate factorial
10000       0.03 seconds
50000       0.41 seconds
100000      2.252 seconds
500000      68.961 seconds
1000000     224.135 seconds

Java代码:

<b>import</b> java.math.BigInteger;
<b>import</b> java.util.*;

<b>class</b> Forloop {
    <b>public</b> <b>static</b> <b>void</b> main(String []args){
        <b>int</b>[] allInputs = <b>new</b> <b>int</b>[]{10000, 50000, 100000, 500000, 1000000}; 
        <b>for</b>(<b>int</b> i=0;i<allInputs.length;i++){
            BigInteger number = BigInteger.valueOf(allInputs[i]);
            BigInteger result = BigInteger.valueOf(1);
            <b>long</b> before = System.currentTimeMillis();
            <b>for</b> (<b>int</b> j=1;j<=allInputs[i];j++){
                result = result.multiply(BigInteger.valueOf(j));
            }
            <b>long</b> after = System.currentTimeMillis();
            System.out.println(<font>"Elapsed Time: "</font><font>+(after - before));
        }
</font>

输出结果:

Output:
Factorial   Time To calculate factorial
10000       0.112 seconds
50000       1.185 seconds
100000      2.252 seconds
500000      89.500 seconds
1000000     385.868 seconds

从上面的程序中,我们可以看到Go对于各种输入数据处理所用的时间比Java要短。

为什么Go比Java更快?

Go被编译为机器代码并直接执行,这使得它比Java快得多。之所以如此,是因为Java使用VM来运行其代码,这使得它与Golang相比变慢。

Golang在内存管理方面也很出色,这在编程语言中至关重要。Golang没有引用但有指针。

在局部变量的情况下,与Java相比,Golang更好。局部变量在Java语言和其他语言中是存储在堆栈中。但是在Golang中有一个例外,它可以从函数返回指向局部变量的指针。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Discrete Mathematics and Its Applications

Discrete Mathematics and Its Applications

Kenneth H Rosen / McGraw-Hill Science/Engineering/Math / 2003-04-22 / USD 132.81

Discrete Mathematics and its Applications is a focused introduction to the primary themes in a discrete mathematics course, as introduced through extensive applications, expansive discussion, and deta......一起来看看 《Discrete Mathematics and Its Applications》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具