文档章节

golang思考之运行速度

 学习吧
发布于 2015/10/17 00:10
字数 307
阅读 144
收藏 0
点赞 0
评论 0

有些资料显示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 ⋅ 4

极速博客引擎--Gor

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

wendal ⋅ 2013/01/20 ⋅ 0

golang思考之运行速度之channel

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

学习吧 ⋅ 2015/10/20 ⋅ 0

golang思考之多核并行

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

学习吧 ⋅ 2015/10/17 ⋅ 0

golang实现web中间件的一些思考

最近陆续看了golang的Martini框架,也试用了,这个山寨自node.js的Express框架和最新的koa框架的golang框架, 同样具有低耦合的特点,不过还是担忧其性能,因为核心采用了reflect反射技术。 ...

yzq1979 ⋅ 2014/04/15 ⋅ 0

golang学习笔记(1):安装&helloworld

安装: golang编译器安装过程比较简单,也比较快,不同平台下(win/linux/macos)都比较相似; https://dl.gocn.io/golang/1.9.2/go1.9.2.src.tar.gz 下载对应的系统版本的编译器 go的版本号由...

shangluyi ⋅ 2017/12/24 ⋅ 0

Gor 2.5 发布了,极速博客引擎

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

wendal ⋅ 2013/03/26 ⋅ 7

go笔记1-helloWorld

有一次听一个沙龙技术演讲,讲师说go是互联网时代的c,听了详细介绍以后感觉很赞,尤其是并行层面真正在语言层面上做了控制及特殊的内存管理机制等。。。 好吧,下面上先上helloWorld代码。(...

老范的自留地 ⋅ 2012/10/29 ⋅ 3

Golang学习笔记目录

Golang 介绍 Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。...

ChainZhang ⋅ 2017/12/26 ⋅ 0

fakescript 1.3 发布,增加ide及命令行调试

fakescript 1.3发布,更新内容包括: 修复bug,添加调试信息及接口 增加ide,简单的集成开发环境,可运行调试脚本,查看调用栈、协程、字节码及修改变量 为fake.exe增加命令行调试功能,使用...

shitfuck ⋅ 2015/08/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部