文档章节

golang思考之运行速度

 学习吧
发布于 2015/10/17 00:10
字数 307
阅读 166
收藏 1

有些资料显示golang的运行速度很慢,比Java慢,有时比Python慢。学习吧测试发现golang的运行速度和Java差不多。

首先,使用各种语言编写同一个CPU密集的程序sum。

C(或C++)

#include <stdio.h>
#include <stdint.h>
#include <time.h>

int main(void){
    int iN; 
    int64_t jN; 
    scanf("%d %ld",&iN,&jN);
    time_t timeBegin=time(NULL);
    int i;
    for(i=0;i<iN;++i){
        int64_t sum=0;
        int64_t j;
        for(j=0;j<jN;++j){
            sum+=j;
        }
        printf("sum:%ld\n",sum);
    }   
    time_t timeEnd=time(NULL);
    printf("%ds\n",(int)(timeEnd-timeBegin));
    return 0;
}

Golang

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        var sum int64 = 0
        var j int64
        for j = 0; j < 1000000000; j++ {
            sum += j
        }
        fmt.Println("sum:", sum)
    }   
}

Java

package hello;

public class Hello {
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();
		for (int i = 0; i < 10; ++i) {
			long sum = 0;
			for (long j = 0; j < 1000000000; ++j) {
				sum += j;
			}
			System.out.println("sum:" + sum);
		}
		long endTime = System.currentTimeMillis();
		System.out.println((endTime - startTime) / 1000.0 + "s");
	}
}

Python

#!/usr/bin/env pypy
#coding:utf-8

for i in range(10):
    s=sum(range(1000000000))
    print('sum:%d'%s)

运行速度统计:

编程语言    第一次时间    第二次时间
C                6s           6s
Golang       6.327s       6.159s
Java          6.03s       5.981s
Python      15.860s      13.184s

结论,golang的运行速度和Java差不多,比Python快。

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 20
码字总数 6841
作品 0
海淀
程序员
私信 提问
Gor 3.7.0 2014 年尾特别版,极速博客引擎

Gor 3.7.0 2014 年尾特别版,更新内容如下: 修正好多issue 支持用文件名来声明文章日期 得益于上游markdown库的更新, 支持更多markdown特性 支持预览功能了 修正了与golang 1.4的兼容性问题...

wendal
2014/12/29
2.4K
4
极速博客引擎--Gor

gor 是使用 golang 实现的类Ruhoh静态博客引擎(Ruhoh like),基本兼容ruhoh 1.x规范. 相当于与ruhoh的官方实现(ruby实现), 有以下优点: 速度完胜 -- 编译wendal.net近200篇博客,仅需要1秒 安装...

wendal
2013/01/20
3.3K
0
golang思考之运行速度之channel

golang channel测速程序: C语言有锁并发队列: C语言无锁并发队列: TCP: 速度: 测试暂时完成了,留下了很多问题: 1、为什么golang的channel比C语言快?如果C语言在内核态实现并发队列呢...

学习吧
2015/10/20
101
0
golang思考之多核并行

有些资料显示golang实现了并发,离多核并行还有很远。学习吧测试发现golang实现了多核并行。 运行时间:6.254s。 多核并行: 运行时间:2.057s。系统监视器显示4个核都运行到了100%。...

学习吧
2015/10/17
127
0
Ruby vs Golang:四个维度对比,谁更胜一筹?

软件应用程序的快速增长已经不再只是一件其本身受欢迎的事情了,它更是带来了深刻改善所有行业业务流程的真正机会。所以,对于企业、行业来说,通过合适的编程创建出出色的软件解决方案成为了...

局长
08/15
4.1K
21

没有更多内容

加载失败,请刷新页面

加载更多

Eos如何删除钱包

在使用Eos的keosd钱包软件时,如果要删除EOS中指定名称的钱包,最简单的办法是直接删除钱包文件,不过在删除钱包之前,需要先停止钱包软件的运行。 学习EOS应用开发要选这个:【EOS智能合约与...

geek12345
12分钟前
1
0
js操作时间

获取当前时间 function getSystemDate(){ var systemDate = new Date(); // 获取当年 var year = systemDate.getFullYear(); // 获取当月 (月+1是因为js中......

简心
19分钟前
2
0
区块链开发教程推荐

区块链的重要性已经毋庸置疑,但对大多数跃跃欲试的开发者而言,去中心化思想、非对称加密、共识算法等技术点的理解和运用,都是入门区块链开发的挑战。合适的区块链开发教程可以极大地缩短区...

笔阁
20分钟前
1
0
菜单menuView总结

1、FTPopOverMenu

_____1____
31分钟前
3
0
MyEclipse教程:Web开发——部署和测试Web项目

MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程向用户展示了使用关联的Web项目创建Web片段项目的机制。用户还可以获得要检查的示例项目。在本教程中,用户将学习如...

电池盒
46分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部