美文网首页
C++/Go/Lua 效率对比——简单算术运算

C++/Go/Lua 效率对比——简单算术运算

作者: loki528 | 来源:发表于2019-07-11 14:15 被阅读0次

测试 sum = sum + i * i 循环1亿次

为什么不是单纯的加法呢,因为发现当i到一定程度的时候,c++的计算时间都是0,可能使用了 优化 sum =(i+1)*i/2

等有空分析c++汇编代码

减少c++的另类优化,所以用的加 i * i,公平起见

1. lua代码

#!/usr/bin/lua

require("os")

local starttime = os.clock()

local length = 100000000

local sum = 0

for i = 1, length do

    sum = sum + i * i

end

print("sum = ", sum)

local endtime = os.clock()

print(string.format("cost time : %.4f", endtime - starttime))

cost time : 1.4200

cost time : 1.4400

cost time : 1.4200

cost time : 1.4600

cost time : 1.4300

平均时间 7.17/6 = 1.434

2.cpp

test.cpp

#include <stdio.h>

#include <time.h>

void test_add(unsigned int length)

{

    unsigned long long sum = 0;

    for(long i=1;i<length; ++i)

        sum += i*i;

    printf("sum = %lu\n", sum);

}

class CalcTime

{

    public:

        CalcTime()

        {

            m_start = clock();

        }

        ~CalcTime()

        {

            unsigned long long end = clock();

            printf("cost time = %f\n", ((double)(end - m_start))/CLOCKS_PER_SEC);

        }

    private:

        unsigned long long m_start = 0;

};

int main()

{

    printf("CLOCKS_PER_SEC = %d\n", CLOCKS_PER_SEC);

    {

        CalcTime calc;

        test_add(100000000);

    }

    return 0;

}

Makefile

test: test.cpp

    g++ -g -O2 --std=c++11 test.cpp -o test

clean:

    rm test

cost time = 0.050000

cost time = 0.050000

cost time = 0.050000

cost time = 0.060000

cost time = 0.050000

平均时间 0.052

3. Go

test_go.go

package main

import "time"

import "fmt"

func test_add(len uint) {

    var sum uint64 = 0

    var i uint = 1

    for ; i < len; i++ {

        sum += (uint64)(i * i)

    }

    fmt.Printf("sum = %v\n", sum)

}

func main() {

    start := time.Now()

    test_add(100000000)

    end := time.Now()

    dif := end.Sub(start)

    fmt.Printf("cost time: %v\n", dif)

}

cost time: 56.804357ms

cost time: 57.604325ms

cost time: 57.030147ms

cost time: 55.54873ms

cost time: 58.058417ms

平均时间=56.98ms

结论:

C++ / Go /Lua 效率对比

52 :56.98 :1434

1:1.0958:27.5769

相关文章

  • C++/Go/Lua 效率对比——简单算术运算

    测试 sum = sum + i * i 循环1亿次 为什么不是单纯的加法呢,因为发现当i到一定程度的时候,c++...

  • Golang筑基 ——运算符

    golang的运算符同C/C++一样,共有如下几种 算术运算符 下表列出了所有Go语言的算术运算符。假定 A 值为...

  • C++/Go/Lua 效率对比——函数调用

    测试递归函数调用——斐波那契数列f(n) = f(n-1) + f(n-2)f(1) = 1, f(2) = 1计...

  • Go的移位运算符的优先级比算术运算符大

    1.Go的移位运算符的优先级比算术运算符大,C++反之2.不管什么语言移位运算符前的运算都得加括号3.写go的快排...

  • C/C++学习笔记

    C/C++运算符优先级 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符同优先级...

  • 06-Go语言运算符

    算术运算符 Go语言算术运算符 关系运算符 逻辑运算符 位运算符 其他运算符

  • 运算符

    Lua运算符 运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算 Lua提供了以下几种运算符类型:算术...

  • C++运算符

    C++中的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其它运算符,算术运算符中“+”“-”...

  • Go语言基础之运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符描...

  • 第二章 基本运算符

    swift支持c++大部分运算符,包括算术运算符(+,-,*,/,%),赋值运算符(=),组合赋值运算符(+=,-...

网友评论

      本文标题:C++/Go/Lua 效率对比——简单算术运算

      本文链接:https://www.haomeiwen.com/subject/sorrkctx.html