自分のブログ名

物理の空き地 by M.E_K

日々の学び、感じたことを書いております。ブログ移行中->https://physics-mek.com

移転しました。

リダイレクトします。

C++ Python 計算速度比較

移転しました。

リダイレクトします。

はじめに

C++はよく計算が速いといわれ、Pythonは速度は出ないが対話的にコーディングが出来るといわれる気がする。C++が本当に速いかどうか、きになったので比較してみた。

評価手法

for文で10億回足し合わせる計算をPythonC++で同じ計算をした。
計測時間はmsecの分解能で測定した。
python

import time
x = 0
start_time = time.time()
for i in range(0,100000000):
    x +=1
elapsed_time = time.time()-start_time

C++

#include <iostream>
#include <chrono>
#include <stdio.h>
using namespace std;

int main()
{
    chrono::system_clock::time_point start, end;
    start = chrono::system_clock::now();
    int x = 0;
    for (int v = 0;v < 100000000;v++)
    {
        x +=1;
    }
    end = chrono::system_clock::now();
    double time = static_cast<double>(chrono::duration_cast
        <chrono::microseconds>(end - start).count()/1000.0);
}

使用スペック

CPU Intel(R) Core(TM) i5-7200U CPU @ 2.50 GHz
メインメモリ 8GB LPDDR3 SDRAM
結果
Python [sec] 27.126 25.162 27.291
C++ [sec] 0.000 0.000 0.000

Python = 26.526\pm1.184 sec
C++ = 0.000\pm0.000 sec

分かったこと

C++が爆速だということが分かった。CPU使用率やメモリ使用率にも依存するので正直正確には比べられないが、誤差の3\sigma以内でC++の方が速いことが分かる。C++が速い理由として、pythonではx = 0と置くのに対し、C++ではint x = 0とかく。C++は先に変数の型を決め、占有するメモリ量を宣言するが、pythonでは変数を自由な型で受けつけ、その分メモリ量を確保しているからだと私は考えている。あくまで推測なので、詳しくわかる人がいたらコメントしていただきたい。

単純な足し合わせでもpythonは時間がかかる。計算速度を求める場合、pythonではなくC++の方が圧倒的に良いだろう。