zoukankan      html  css  js  c++  java
  • 各大语言性能对比PK数据

    这里我用的python版本是Python 3.6.2(64位),php版本是PHP 7.0.12(64位),node版本是v6.11.0(64位),Go 1.8.3(64位),C# 基于.Net 4.0,lua 5.1.4

    对比

    python

    import time
    
    calNum = 100000000
    
    def test():
        sum = 0
        for x in range(1, calNum + 1):
            sum += x
        return sum
    
    
    start = time.time()
    
    test()
    
    end = time.time()
    
    print(end - start)
    

    PHP

    <?php
    
    $calNum = 200000000;
    
    function test() {
        $sum = 0;
        global $calNum;
        for ($i = 0; $i < $calNum; $i++) { 
            $sum += $i;
        }
        return $sum;
    }
    
    $start = time();
    
    test();
    
    $end = time();
    
    echo ($end - $start);
    

    nodeJS

    
    let calNum = 200000000;
    
    function test() {
        let sum = 0;
        for (var i = 0; i < calNum; i++) {
            sum += i;
        }
        return sum;
    }
    
    let start =  new Date().getTime();
    
    test();
    
    let end =  new Date().getTime();
    
    console.log((end - start) / 1000);

    Golang

    package main
    
    import (
        "fmt"
        "math"
        "time"
    )
    
    var calNum = 200000000
    
    func test() int {
        sum := 0
        for i := 0; i < calNum; i++ {
            sum += i
        }
        return sum
    }
    
    func main() {
        start := time.Now().UnixNano()
        test()
        end := time.Now().UnixNano()
        fmt.Println(float64(end - start) / math.Pow(10, 9))
    }
    

    C#

     private static int calNum = 100000000;
    
            static int test()
            {
                int sum = 0;
                for (int i = 0; i < calNum; i++)
                {
                    sum += i;
                }
                return sum;
            }
    
            static void Main(string[] args)
            {
                double start = ConvertDateTimeInt(DateTime.Now);
                test();
                double end = ConvertDateTimeInt(DateTime.Now);
                Console.WriteLine(end - start);
                Console.ReadLine();
            }
    
            /// <summary>
            /// DateTime时间格式转换为Unix时间戳格式
            /// </summary>
            /// <param name="time"> DateTime时间格式</param>
            /// <returns>Unix时间戳格式</returns>
            public static double ConvertDateTimeInt(DateTime time)
            {
                System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
                return (time - startTime).TotalSeconds;
            }

    lua

     
    calNum = 200000000
    
    
    function test()
        local sum = 0
        for i=0,calNum - 1 do
            sum = i + sum
        end
        return sum
    end
    
    local start = os.time()
    test()
    local endTime = os.time()
    
    print(endTime - start)
    

    执行时间(1亿次,2亿次)

    python

    C:UsersmhDesktop>python cal.py
    7.873001337051392
    
    C:UsersmhDesktop>python cal.py
    17.40298104286194

    PHP

    C:UsersmhDesktop>php cal.php
    5
    C:UsersmhDesktop>php cal.php
    13

    PHP 7.1(新下载的)

    C:UsersmhDesktop>php cal.php
    5
    C:UsersmhDesktop>php cal.php
    10
    

    nodeJS

    C:UsersmhDesktop>node cal.js
    1.288
    
    C:UsersmhDesktop>node cal.js
    2.603
    

    Golang

    C:UsersmhDesktop>go run cal.go
    0.0519903
    
    C:UsersmhDesktop>go run cal.go
    0.1080017

    C#

    0.685999155044556
    
    1.52999567985535
    

    lua(just for fun)

    C:UsersmhDesktop>cal.lua
    1
    
    C:UsersmhDesktop>cal.lua
    2
    

    PHP7还是比python3.6快的,不过在脚本语言中node更快,Go挺快的

  • 相关阅读:
    灵魂拷问!浏览器输入「xxxxhub」的背后.....
    趣谈 DHCP 协议,有点意思。
    规约模式,颤抖吧产品经理!再也不怕你乱改需求了
    订阅者模式,公众号、B站、快手用了都说好!
    设计模式,你相信吗,只用两个函数实现事务!
    Linux系统中安装Jenkins
    Linux系统在线安装和查看git版本
    VIM中的保存和退出命令
    @JsonProperty爆红
    手动运行jar包
  • 原文地址:https://www.cnblogs.com/zgblog/p/10346176.html
Copyright © 2011-2022 走看看