تست سرعت پایتون (:

به نام خدا

امروز میخواستم یه تست کنم ببینم که پایتون که تازه شروع کردم توی محاسبات خفن چقدر زمان طی میکنه ؟

البته این مقایسه از نظر تولید اعداد رندم هست.

برنامه که می خواستم بنویسم این بود .

برنامه ای بنویسید که ۱۰ میلیون بار پرتاب سکه را به صورت تصادفی حساب کند و مدت زمان طول کشیدن عملیات را در خروجی چاپ کند

خوب اینم کد ها :

Python (3) :

import time
import random
a = time.time()
i = 10000000
print(&quotwait ...&quot)
while i >= 0:
    n = random.randint(1, 2)
    i-=1
d = time.time()
c = d - a
print(&quottime left&quot,c)
if n == 1:
    print(&quotup&quot)
if n == 2:
    print(&quotdown&quot)

و اون رو اجرا میکنیم ( فرض میکنیم که شما از گنو/لینوکس استفاده میکنید و اسم فایلمون test-speed.py هست ) .

python3 test-speed.py

و خروجی ( cpu ۴ هسته ای و رم ۴ گیگ در دبیان ۹ تستینگ با میزکار xfce ) :

wait ...
time left 14.401490211486816
up

حالا چطوره این کارو با ۱۶ میلیون بار انجام بدیم ؟

wait ...
time left 24.84433341026306
up

و حالا بهتره با زبان C تست کنیم ( البته با پرتاب یک میلیارد بار ! )

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 int i,n;
 int main(void)
 {
 time_t rawtime;
 struct tm * timeinfo;
 time ( &rawtime );
 timeinfo = localtime ( &rawtime );
 printf ( &quottime start: %s&quot, asctime (timeinfo) );
 for(i=0;i<1000000000;i++){
 n=1+rand()%2;
 }
 time ( &rawtime );
 timeinfo = localtime ( &rawtime );
 printf ( &quottime end: %s&quot, asctime (timeinfo) );
  }

و نتیجه :

time start: Thu Dec 20 11:10:10 2018
time end: Thu Dec 20 11:10:18 2018


+ البته اینکه پایتون در سادگی و امکانات تفاوت بسیار زیادی با c داره قابل انکار نیست و همچنین زبان c یک زبان کامپایلری هست ولی پایتون یک زبان مفسری ، درضمن من وقتی این کد رو نوشتم اصلا بهینه نبود وگرنه میشه از توابع سریعتر از randint استفاده کرد که سرعت رو بالاتر برد.