1024programmer Java Detailed analysis of sample codes for performance comparison of golang, python, php, c++, c, java, and Nodejs

Detailed analysis of sample codes for performance comparison of golang, python, php, c++, c, java, and Nodejs

This article mainly introduces relevant information on the performance comparison of golang, python, php, c++, c, java, and Nodejs. Friends in need can refer to it

When I was working in PHP/C++/Go/Py, I suddenly encountered I had an idea and wanted to make a simple comparison of the performance of the recent mainstream programming languages. As for how to compare, I still have to use the magical Fibonacci algorithm. Maybe it’s more commonly used or fun.

Okay, talk is cheap, show me your code! Open your Mac, click on Clion and start coding!

1. Why is Go the first one? Because I am using it personally recently and I feel very good.

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);
 }

Let’s take a look with Go1.7 first:

The code is as follows:

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

Then, look at 1.8:

The code is as follows:

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

I can’t see the difference, but the official 1.8 has been optimized by 20% in GC, Compile, etc. Maybe this demo is too simple.

2. Python has been very popular recently, so let’s compare it

def fibonacci(i):
   if i<2:
     return i
   return fibonacci(i-2) + fibonacci(i-1)
 
 print(fibonacci(34))

Let’s take a look at python2.7 first

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

 real 0m2.651s
 user 0m2.594s
 sys 0m0.027s

Then Py 3.5

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

 real 0m3.110s
 user 0m2.982s
 sys 0m0.026s

The biggest problem of Py can be seen at a glance: the more you upgrade, the slower it becomes. What’s worse, many syntax incompatibilities are incompatible. But I usually write algorithms and small programs pretty well. At other times, Forget it, just use Go.

3. PHP, I use it a lot for work, so I have to compare it

<?php
 function fibonacci($i){
   if($i<2) return $i;
   return fibonacci($i-2) + fibonacci($i-1);
 }
 echo fibonacci(34);

Since I mainly use php5.4 for my work, I will start with:

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

The test environment is 5.6, so there is also a wave:

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

New projects and fun stuff are all php7, please see:

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

I feel that php7 and 5 are completely different, not the same thing at all, and the progress has been too great. I rely on Brother Bird to give me a thumbs up! I suggest you use php7 more.

4.C++ is my favorite theoretical basis. Of course, I am talking about C++11/14, not the old antique c99, etc.

#include 
 
 constexpr int fibonacci(const int i){
   if(i<2) return i;
   return fibonacci(i-2) + fibonacci(i-1);
 }
 
 int main() {
   fibonacci(34);
   return 0;
 }

First use g++ 6.2 without optimization to see:

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

After adding optimization-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

The effect is still very obvious, and the running time is only half of the former.

5. C also wrote one

#include 
 
 int fibonacci(int i){
   if(i<2) return i;
   return fibonacci(i-2)+ fibonacci(i-1);
 }
 int main(){
   printf("%d",fibonacci(34));
 }

Without optimization:

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

Add -O2 optimization:

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

Same as C++14, the speed is significantly improved after optimization, twice as fast.

6.Java is what I least want to write. Although it is very popular, it feels too bloated

class Fib{
   public static void main(String[] args){
     System.out.println(fibonacci(34));
 
   }
 
   static int fibonacci(int i){
     if(i<2) return i;
     return fibonacci(i-2) + fibonacci(i-1);
   }
 }

The result of compiling and running is:

qiangjian@localhost:  /works/learnCPP$ java -version && time javac Fib.java && time java Fib
 java version "1.8.0_25"
 Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
 Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

 real 0m0.952s
 user 0m1.302s
 sys 0m0.144s

 real 0m0.150s
 user 0m0.123s
 sys 0m0.025s

The performance is okay, but the Compile time is too low compared to c++/go.

7. Of course, the last one to appear is Javascript, which has always been popular. No, to be precise, it is Nodejs (this thing has nothing to do with Java)

function fibonacci(i){
   if(i<2) return i;
   return fibonacci(i-2) + fibonacci(i-1);
 }
 console.log(fibonacci(34))

Result:

qiangjian  @localhost:/works/learnCPP$ node -v && time node fib.js
 v6.10.0

 real 0m0.332s
 user 0m0.161s
 sys 0m0.062s

The result is still shocking. It only takes TMD 0.3s and less than 0.5s in total, which is almost close to Java. However, the advantages of code volume and maintainability are really thanks to Google. Dad, the V8 son of Chromium Dad and the open source community.

If Nodejs really runs stably, it may not be able to unify the “program world”. Of course, I’m just talking, don’t take it too seriously.

Come to the picture:

Summary:

I feel that each language has different uses, and performance is just a single indicator. What I value more is: readability, maintainability, portability, robustness, and expansion. Sex, then performance. Moreover, modern hardware is becoming more and more powerful. Mobile phones often have 8G, CPUs have caught up with the CPUs of PCs 5 years ago, and SSDs are becoming more popular… I am more optimistic about Golang/php/python, and also pay attention to modern C++, such as 14 and 17. As for rust, swift, java, and scala, this is mainly related to personal needs and the company’s technology stack. Ha ha! Let’s write this much first!

The above is the detailed content of the sample code that specifically analyzes the performance comparison of golang, python, php, c++, c, java, and Nodejs. For more information, please pay attention to other related articles on 1024programmer.com!

This article is from the internet and does not represent1024programmerPosition, please indicate the source when reprinting:https://www.1024programmer.com/detailed-analysis-of-sample-codes-for-performance-comparison-of-golang-python-php-c-c-java-and-nodejs-3/

author: admin

Previous article
Next article

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Us

Contact us

181-3619-1160

Online consultation: QQ交谈

E-mail: [email protected]

Working hours: Monday to Friday, 9:00-17:30, holidays off

Follow wechat
Scan wechat and follow us

Scan wechat and follow us

Follow Weibo
Back to top
首页
微信
电话
搜索