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

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

内容简介:本次小测试并不是试图说明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中有一个例外,它可以从函数返回指向局部变量的指针。


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

查看所有标签

猜你喜欢:

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

Learn Python 3 the Hard Way

Learn Python 3 the Hard Way

Zed A. Shaw / Addison / 2017-7-7 / USD 30.74

You Will Learn Python 3! Zed Shaw has perfected the world’s best system for learning Python 3. Follow it and you will succeed—just like the millions of beginners Zed has taught to date! You bring t......一起来看看 《Learn Python 3 the Hard Way》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具