golang、python、php、c++、c、java、Nodejs のパフォーマンス比較のためのサンプル コードの詳細な分析

黄舟
リリース: 2023-03-06 15:16:02
オリジナル
2480 人が閲覧しました

この記事は主に、golang、python、php、c++、c、java、Nodejsのパフォーマンス比較に関する関連情報を紹介していますので、必要な方は参考にしてください

私がPHP/C++/Goを使っていた頃。 /Py、突然思いつき、最近主流の

プログラミング言語のパフォーマンスを簡単に比較したいと思いました。比較方法としては、やはり魔法のフィボナッチアルゴリズムを使用する必要があります。もしかしたら、もっと一般的に使われたり、楽しいかもしれません。

それでは、話は安いので、コードを見せてください。Mac を開いて、Clion をクリックして、コーディングを始めてください。

1. なぜ Go が最初なのか? 私が最近個人的に使っていて非常に良いと感じているからです


package main
import "fmt"
func main(){
  fmt.Println(fibonacci(34))
}
func fibonacci(i int) int{
  if(i<2){
    return i;
  }
  return fibonacci(i-2) + fibonacci(i-1);
}
ログイン後にコピー

まずは Go1.7 を見てみましょう:

コードは次のとおりです。
qiangjian@localhost:/works/learnCPP$ go version && time go build  fib.go  && time ./fibgo version go1.7.5 darwin/amd64
real    0m0.206suser    0m0.165ssys     0m0.059s
real    0m0.052suser    0m0.045ssys     0m0.004s
ログイン後にコピー

それでは、1.8 を見てみましょう:

コードは次のとおりです:

qiangjian@localhost:/works/learnCPP$ go18 version && time go18 build  fib.go  && time ./fibgo version go1.8 darwin/amd64
real    0m0.204suser    0m0.153ssys     0m0.062s
real    0m0.051suser    0m0.045ssys     0m0.003s
ログイン後にコピー

違いはわかりませんが、公式 1.8 は GC やコンパイルなどで 20% 最適化されています。おそらくこのデモはは単純すぎます。 pythonは最近非常に人気があります。その Py 最大の問題は、アップグレードすればするほど速度が遅くなることです。そして、恐ろしいことに、多くの構文に互換性がないことですが、アルゴリズムや小さなプログラムを作成する場合には、それは悪いことではありません。それを忘れて、Go を使用してください。

3. PHP、私は仕事でよく使うので比較する必要があります

def fibonacci(i):
  if i<2:
    return i
  return fibonacci(i-2) + fibonacci(i-1)
 
print(fibonacci(34))
ログイン後にコピー

私は仕事で主にphp5.4を使用しているので、まずは次のことから始めましょう:

qiangjian@localhost:/works/learnCPP$ python2 -V && time python2 ./fib.py 
Python 2.7.13
5702887

real 0m2.651s
user 0m2.594s
sys 0m0.027s
ログイン後にコピー

テスト環境は 5.6 なので、私もここにいます:

qiangjian@localhost:/works/learnCPP$ python3 -V && time python3 ./fib.py 
Python 3.5.1

real  0m3.110s
user  0m2.982s
sys   0m0.026s
ログイン後にコピー

新しいプロジェクトや私が遊んでいる物はすべて php7 です。ぜひ見てください:

<?php
function fibonacci($i){
  if($i<2) return $i;
  return fibonacci($i-2) + fibonacci($i-1);
}
echo fibonacci(34);
ログイン後にコピー

php7 と 5 は完全に異なると感じています。まったく同じで、進歩があまりにも改善されました。素晴らしいです。バード兄弟に親指を立ててもらいます。 php7 をもっと使うことをお勧めします。

4.C++ は私のお気に入りの理論的基礎です。もちろん、私は古い古い c99 などではなく、C++11/14 について話しています。

qiangjian@localhost:/works/learnCPP$ php54 -v && time php54 fib.php 
PHP 5.4.43 (cli) (built: Dec 21 2016 12:01:59) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
real  0m2.288s
user  0m2.248s
sys   0m0.021s
ログイン後にコピー

最初は g++ 6.2 を使用してください。最適化なしで見てみましょう:

qiangjian@localhost:/works/learnCPP$ php -v && time php fib.php 
PHP 5.6.28 (cli) (built: Dec 6 2016 12:38:54) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
real  0m2.307s
user  0m2.278s
sys   0m0.017s
ログイン後にコピー

に最適化 -O2 を追加した後でも、

qiangjian@localhost:/works/learnCPP$ php -v && time php fib.php
PHP 7.1.2 (cli) (built: Feb 17 2017 10:52:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
5702887
real  0m0.815s
user  0m0.780s
sys   0m0.015s
ログイン後にコピー

の効果は非常に明白であり、実行時間は前者の半分しかありません。

5. C も最適化なしで

#include <iostream>
 
constexpr int fibonacci(const int i){
  if(i<2) return i;
  return fibonacci(i-2) + fibonacci(i-1);
}
 
int main() {
  fibonacci(34);
  return 0;
}
ログイン後にコピー

を書きました:

qiangjian@localhost:/works/learnCPP$ time g++-6 -o a.bin main.cpp && time ./a.bin 

real  0m0.378s
user  0m0.254s
sys   0m0.104s

real  0m0.050s
user  0m0.043s
sys   0m0.002s
ログイン後にコピー

-O2 最適化あり:

qiangjian@localhost:/works/learnCPP$ time g++-6 -O2 -o a.bin main.cpp && time ./a.bin 

real  0m0.874s
user  0m0.344s
sys   0m0.180s

real  0m0.034s
user  0m0.019s
sys   0m0.004s
ログイン後にコピー

最適化後は明らかに速度が向上します。ダブルのほうが速いです。

6. Java は非常に人気がありますが、あまりにも肥大化しているように感じます

#include <stdio.h>
 
int fibonacci(int i){
  if(i<2) return i;
  return fibonacci(i-2) + fibonacci(i-1);
}
int main(){
  printf("%d",fibonacci(34));
}
ログイン後にコピー

パフォーマンスは問題ありません。と c++/ go に比べて低すぎます。

7. 最後のものは、もちろん人気の

javascript

です。いいえ、正確に言うと、Nodejs です (これは Java とは何の関係もありません)


qiangjian@localhost:/works/learnCPP$ time gcc-6 -o c.bin fib.c && time ./c.bin 

real  0m0.341s
user  0m0.063s
sys   0m0.101s
real  0m0.049s
user  0m0.044s
sys   0m0.002s
ログイン後にコピー

結果:


qiangjian@localhost:/works/learnCPP$ time gcc-6 -O2 -o c.bin fib.c && time ./c.bin 

real  0m0.143s
user  0m0.065s
sys   0m0.034s
real  0m0.034s
user  0m0.028s
sys   0m0.002s
ログイン後にコピー

結果は依然として衝撃的です。所要時間は TMD わずか 0.3 秒で、合計時間は Java にほぼ近いですが、コード量と保守性の利点は、まさに Google と

Chr の V8 のおかげです。

omium とオープンソース コミュニティ。


Nodejs が本当に安定して動作するのであれば、「プログラムの世界」を統合することは実際にはできないかもしれません。

写真を撮りましょう:


要約:

それぞれの言語には異なる用途があると感じており、パフォーマンスは単なる 1 つの指標にすぎません。私がより重視しているのは、読みやすさ、保守性、移植性、堅牢性、拡張性です。それからパフォーマンス。 さらに、最近のハードウェアはますます高性能になり、携帯電話は 8G を搭載することが多くなり、CPU は 5 年前の PC の CPU に追いつき、SSD の普及も進んでいます。 私は Golang/php/python についてはより楽観的で、14 や 17 などの最新の C++ にも注意を払っています。Rust、swift、Java、

scala

については、忘れてください。これは主に個人的なニーズに関連しており、同社のテクノロジースタック。ははは! まずはこれくらい書いてみましょう!

以上がgolang、python、php、c++、c、java、Nodejs のパフォーマンス比較のためのサンプル コードの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート