国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能

這篇具有很好參考價(jià)值的文章主要介紹了使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

筆者使用最多的語(yǔ)言是C++,目前項(xiàng)目中在使用Go,也使用過(guò)不少其它語(yǔ)言,像Erlang,Python,Lua,C#等等。最近看到C#奪冠,首次榮獲 TIOBE 年度編程語(yǔ)言,同時(shí)也看到網(wǎng)上有不少Java與C#之爭(zhēng)的文章,于是就想要來(lái)做一個(gè)性能比較。

這里參與性能比較的是以下幾門語(yǔ)言:Go、C#、Java、Python、Erlang。這些語(yǔ)言或語(yǔ)言標(biāo)準(zhǔn)庫(kù)本身都提供了大數(shù)計(jì)算的支持,不需要自己實(shí)現(xiàn)大數(shù)計(jì)算或者找額外的庫(kù)來(lái)實(shí)現(xiàn)大數(shù)計(jì)算。

筆者選取計(jì)算斐波那契(Fibonacci)數(shù)列來(lái)做性能比較,可能會(huì)有局限性,僅作參考。斐波那契數(shù)列是指這樣一個(gè)數(shù)列:1,1,2,3,5,8,13,21,34,55,89……這個(gè)數(shù)列從第3項(xiàng)開(kāi)始 ,每一項(xiàng)都等于前兩項(xiàng)之和。為了達(dá)到一定計(jì)算量,但又不會(huì)費(fèi)時(shí)太久,筆者以計(jì)算100萬(wàn)次斐波那契(Fibonacci)數(shù)列的耗時(shí)來(lái)作為依據(jù)。

一、測(cè)試環(huán)境

項(xiàng)目 參數(shù)
CPU 11th Gen Intel? Core? i7-11700 @ 2.50GHz
內(nèi)存 32G
硬盤 WD NVMe SSD
操作系統(tǒng) Windows 10 22H2

二、各語(yǔ)言源碼

1、Go源碼

GO版本為1.12.5

package main

import (
	"fmt"
	"math/big"
)

func main() {
	a := big.NewInt(1)
	b := big.NewInt(1)
	sum := big.NewInt(0)
	for i := 0; i < 1000000; i++ {
		sum = sum.Add(a, b)
		b.Set(a)
		a.Set(sum)
	}
	fmt.Println(sum)
}

2、C#源碼

C#選擇的是.net 8.0.101

using System.Numerics;

BigInteger a = new BigInteger(1);
BigInteger b = new BigInteger(1);
BigInteger sum = new BigInteger(0);
for (int i = 0; i < 1000000; i++)
{
	sum = a + b;
	b = a;
	a = sum;
}

Console.WriteLine(sum);

3、Java源碼

Java版本是21.0.1

import java.math.BigInteger;

public class t {
	public static void main(String[] args) {
		BigInteger a = BigInteger.valueOf(1);
		BigInteger b = BigInteger.valueOf(1);
		for (int i = 0; i < 1000000; i++) {
			BigInteger sum = a.add(b);
			b = a;
			a = sum;
		}
		System.out.println(a.toString());
	}
}

4、Python源碼

python版本是3.11.7

import sys

sys.set_int_max_str_digits(1000000)
a = 1
b = 1
sum = 0
for i in range(0, 1000000):
    sum = a + b
    b = a
    a = sum

print(sum)

5、Erlang源碼

erlang版本是:otp_win64_26.2.1

-module(app).

-export([main/1]).

fibonacci(A, B, 1) ->
    A+B;
fibonacci(A, B, N) ->
    fibonacci(A+B, A, N-1).

main(_) ->
    V = fibonacci(1,1, 1000000),
    io:format("~w", [V]),
    ok.

二、使用VSCode Code Runner測(cè)試

由于有些語(yǔ)言有緩存,所以都以多次執(zhí)行結(jié)果較少耗時(shí)的為準(zhǔn):

1. Go

go run main.go

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

2. C#

dotnet run

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

3. Java

javac t.java && java t

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

4. Python

set PYTHONIOENCODING=utf-8 && python.exe -u main.py

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

5. Erlang

escript app.erl

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

三、使用命令行測(cè)試

1. go

time go run main.go

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能
使用go build main.go編譯成exe后再運(yùn)行time ./main

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

2. C#

time dotnet run
使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

直接執(zhí)行生成的exe:

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

3. Java

time java t

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

4. Python

time python main.py

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

5. Erlang

先編譯erlc app.erl,再執(zhí)行time erl -noshell -s app main 0 -s init stop

使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能,編程語(yǔ)言,go,java,C#,python,erlang,fibonacci,語(yǔ)言性能

四、結(jié)果統(tǒng)計(jì)

語(yǔ)言 Code Runner結(jié)果 Code Runner 執(zhí)行的命令 命令行編譯運(yùn)行結(jié)果 命令行編譯運(yùn)行的命令 命令行直接運(yùn)行結(jié)果 命令行直接運(yùn)行的命令
Go 3.548秒 go run main.go 3.539秒 time go run main.go 3.068秒 time ./main
C# 10.295秒 dotnet run 10.075秒 time dotnet run 9.255秒 time ./ConsoleApp
Java 10.654秒 javac t.java && java t / / 9.814秒 time java t
Python 5.939秒 set PYTHONIOENCODING=utf-8 && python.exe -u main.py 5.943秒 time python main.py / /
Erlang 13.353秒 escript app.erl / / 12.836秒 time erl -noshell -s app main 0 -s init stop

從結(jié)果可以看出,Go作為后起的名門之秀,在此項(xiàng)測(cè)試中是遙遙領(lǐng)先;C#在沒(méi)有使用.net 8的AOT特性的情況下,依舊是略勝Java一籌,相信如果使用了AOT,可能會(huì)更快,但是其編譯速度相比JAVA有點(diǎn)拖后腿;Erlang作為老牌并發(fā)編程語(yǔ)言,雖然近幾年不斷發(fā)展,但是在執(zhí)行效率上還是有待提高;讓人大跌眼鏡的是Python,在傳統(tǒng)認(rèn)知中Python是應(yīng)該比C#和JAVA慢的,但是出人意料的是比他們倆都快不少。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-799166.html

到了這里,關(guān)于使用斐波那契(Fibonacci)數(shù)列來(lái)測(cè)試各大語(yǔ)言的性能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于C語(yǔ)言用遞歸思想實(shí)現(xiàn)斐波那契數(shù)列的函數(shù)設(shè)計(jì)

    用C語(yǔ)言并利用遞歸思想實(shí)現(xiàn)設(shè)計(jì)一個(gè)程序,完成斐波那契數(shù)列的函數(shù)設(shè)計(jì),利用遞歸實(shí)現(xiàn)!

    2024年04月08日
    瀏覽(18)
  • 斐波那契數(shù)列、青蛙跳臺(tái)階、漢諾塔(C語(yǔ)言Java通用)、遞歸練習(xí)題

    斐波那契數(shù)列、青蛙跳臺(tái)階、漢諾塔(C語(yǔ)言Java通用)、遞歸練習(xí)題

    Write once,Runanywhere. ?????? 本派文章詳細(xì)斐波那契數(shù)列、青蛙跳臺(tái)階、漢諾塔(C語(yǔ)言Java通用)、遞歸練習(xí)題。 ?? ?? ?? 如果你覺(jué)得我的文章有幫助到你,還請(qǐng)【關(guān)注?點(diǎn)贊?收藏】,得到你們支持就是我最大的動(dòng)力!!! ?? ?? ?? ? 版權(quán)聲明:本文由【馬上回來(lái)了】原創(chuàng)、

    2023年04月08日
    瀏覽(44)
  • C#面:使用 IEnumerable 實(shí)現(xiàn)斐波那契數(shù)列生成

    斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列 [1],因數(shù)學(xué)家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱“兔子數(shù)列”, 其數(shù)值為:1、1、2、3、5、8、13、21、34…… 在數(shù)學(xué)上,這一數(shù)列以如下遞推的方法定z義: F(0)=1,F(xiàn)(1)=1, F(n)=F(n - 1)+F(n

    2024年04月16日
    瀏覽(19)
  • Python斐波那契數(shù)列

    斐波那契數(shù)列是一個(gè)經(jīng)典的數(shù)學(xué)問(wèn)題,在 Python 中可以使用多種方法來(lái)實(shí)現(xiàn),下面是幾個(gè)常見(jiàn)的實(shí)現(xiàn)方式: 1. 使用遞歸 ```python def fibonacci_recursive(n): ? ? if n = 1: ? ? ? ? return n ? ? else: ? ? ? ? return fibonacci_recursive(n-1) + fibonacci_recursive(n-2) ``` 2. 使用循環(huán) ```python def fibonacci_i

    2024年02月02日
    瀏覽(22)
  • JAVA-斐波那契數(shù)列

    輸入一個(gè)整數(shù) n ,求斐波那契數(shù)列的第 n 項(xiàng)。 假定從 0 開(kāi)始,第 0 項(xiàng)為 0 。 數(shù)據(jù)范圍 0≤n≤39 樣例

    2024年02月10日
    瀏覽(23)
  • 斐波那契數(shù)列應(yīng)用2

    目錄 斐波那契數(shù)列應(yīng)用2 程序設(shè)計(jì) 程序分析? 系列文章 【問(wèn)題描述】定義如下序列:f(1)=1,f(2)=1;f(n)=(A*f(n-1)+B*f(n-2))mod7? ? ?給定A和B,請(qǐng)你計(jì)算f(n)的值。 【輸

    2023年04月10日
    瀏覽(23)
  • 【動(dòng)態(tài)規(guī)劃】斐波那契數(shù)列模型

    【動(dòng)態(tài)規(guī)劃】斐波那契數(shù)列模型

    凍龜算法系列之斐波那契數(shù)列模型 動(dòng)態(tài)規(guī)劃(英語(yǔ):Dynamic programming,簡(jiǎn)稱 DP) ,是一種在數(shù)學(xué)、管理科學(xué)、計(jì)算機(jī)科學(xué)、經(jīng)濟(jì)學(xué)和生物信息學(xué)中使用的,通過(guò)把原問(wèn)題分解為相對(duì)簡(jiǎn)單的子問(wèn)題的方式求解復(fù)雜問(wèn)題的方法。動(dòng)態(tài)規(guī)劃常常適用于有重疊子問(wèn)題和最優(yōu)子結(jié)構(gòu)性質(zhì)

    2024年02月09日
    瀏覽(20)
  • c 斐波那契數(shù)列輸出

    在C語(yǔ)言中,我們可以通過(guò)遞歸或循環(huán)的方法來(lái)實(shí)現(xiàn)斐波那契數(shù)列的輸出。首先,我們需要明白斐波那契數(shù)列的定義:任一項(xiàng)數(shù)字是前兩項(xiàng)的和(最開(kāi)始兩項(xiàng)均定義為1)。下面是具體的實(shí)現(xiàn)方式。 使用遞歸方法: #include stdio.h int main() { ? ? int m = 0, n = 1, sum; ? ? printf(\\\"請(qǐng)輸入

    2024年02月06日
    瀏覽(21)
  • 矩陣快速冪&斐波那契數(shù)列

    矩陣快速冪&斐波那契數(shù)列

    矩陣快速冪: 快速地求出斐波那契數(shù)列中的每一項(xiàng) 可以快速地求出斐波那契數(shù)列的前n項(xiàng)的和 首先我們來(lái)看如何快速地求出斐波那契數(shù)列的第n項(xiàng) 設(shè) F n = [ f n , f n + 1 ] F_n = [f_n,f_{n+1}] F n ? = [ f n ? , f n + 1 ? ] ,構(gòu)造這一個(gè)行向量,那么對(duì)于此,我們思考 F n F_n F n ? 乘一個(gè)

    2024年02月06日
    瀏覽(18)
  • 斐波那契數(shù)列verilog實(shí)現(xiàn)

    斐波那契數(shù)列verilog實(shí)現(xiàn)

    ?前言: ????????該題為睿思芯科筆試題,筆試時(shí)長(zhǎng)20分鐘。 ????????用代碼實(shí)現(xiàn)斐波那契數(shù)列,代碼需要對(duì)對(duì)enable敏感,當(dāng)enable為高幾周期,sum在enble為高的下一周期輸出第幾個(gè)斐波那契數(shù),斐波那契數(shù)列的生成是后一個(gè)數(shù)字是前兩個(gè)數(shù)字之和,如下序列:0、1、1、

    2024年02月13日
    瀏覽(41)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包