1
0

More than 3 years have passed since last update.

PythonとJavaの実行速度を比較する

Last updated at Posted at 2019-12-18

はじめに

一般にPythonは遅いと言われているが、実際に他言語と比べてどれだけ遅いのかを調べてみた。

測定方法

PythonとJavaの2言語間で、円周率を近似するプログラムを走らせる。
それぞれの差から実行速度が何倍異なるかを調べた。

結論

JAVAのほうが、Pythonより約60倍速いと思われる。
ただし、円周率の近似の結果値をうまく出力できなかったため、本記事だけではJAVAのほうが速いと主張できない。

やったこと

近似式

ライプニッツの公式から円周率を近似した。

π = 4{(1-1/3)+(1/5-1/7)+...(1/[4n+1] - 1/[4n+3] ) }

で求まるらしい。

実行時間の測定方法

Java、Pythonともに、

(計算の実行終了時刻 - 計算の実行開始時刻)

を用いて実行時間を求めた。

Pythonのコード


import time

num = 100000000  # 計算の繰り返し回数
pi = 0  # 円周率の近似値


if __name__ == '__main__':
    start = time.time()

pi = 0
for i in range(num):
    pi += (1 / (i * 4 + 1) - 1 / (i * 4 + 3))
print(pi4)    # 3.141592153589902

elapsed_time = time.time() - start
print("elapsed_time:% .2f" % elapsed_time + "[sec]")

Javaのコード


public class SpeedTest{
   public static void main(String[] args){
       long startTime = System.currentTimeMillis();

       //以下に計測する処理を記述

       int num = 100000000;  // 計算の繰り返し回数
       float pi = 0;  // 円周率の近似値を4で割ったもの
       float pi4 = 0;  // 円周率の近似値

       for(int i = 0;i<num; i++){
         pi += (1 / (i * 4 + 1) - 1 / (i * 4 + 3));
       }
       pi4 = pi * 4;
       //以上、計測する処理内容

       long endTime = System.currentTimeMillis();

       System.out.println(pi4);

       System.out.println("time:" + (endTime - startTime)+"[msec]");
   }

}

結果

Python、Javaともに1億回の処理をそれぞれ2回行ったところ、

Pythonでは33.88 sec, 31.55 sec
平均32.72 secが得られた。

Javaでは528 msec, 568 msec
平均548 msecが得られた。
  --> 平均0.548 sec

以上のことから、PythonとJavaでは59.71倍の実行速度差が存在する。

一方で、円周率の近似値の出力では、
Pythonでは3.1415926445762157が得られ、
Javaでは4.0が得られた。

π = 3.1415926535...
であるため、
Pythonでは8桁の精度で求められたのに対して、
Javaでは精度としては1桁も合っていない。

これはfloat型などでは計算結果が勝手に丸まってしまうことに由来するようだ。
Javaで計算が正しく行われたかどうかが明らかでないため、この結果からJAVAのほうが速い!と言い張るのは難しい。

環境

Python... Python3.6.8, PyCharm 2019.1.2
Java... JAVA10.0.2, Eclips Photon Release (4.8.0)

参考URL

【Python】処理にかかる時間を計測して表示
https://qiita.com/fantm21/items/3dc7fbf4e935311488bc

【Java入門】処理時間をナノ秒・マイクロ秒で計測する方法
https://www.sejuku.net/blog/44904

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0