تست سرعت پایتون (:
به نام خدا
امروز میخواستم یه تست کنم ببینم که پایتون که تازه شروع کردم توی محاسبات خفن چقدر زمان طی میکنه ؟
البته این مقایسه از نظر تولید اعداد رندم هست.
برنامه که می خواستم بنویسم این بود .
برنامه ای بنویسید که ۱۰ میلیون بار پرتاب سکه را به صورت تصادفی حساب کند و مدت زمان طول کشیدن عملیات را در خروجی چاپ کند
خوب اینم کد ها :
Python (3) :
123456789101112131415import time import random a = time.time() i = 10000000 print("wait ...") while i >= 0: n = random.randint(1, 2) i-=1 d = time.time() c = d - a print("time left",c) if n == 1: print("up") if n == 2: print("down")
و اون رو اجرا میکنیم ( فرض میکنیم که شما از گنو/لینوکس استفاده میکنید و اسم فایلمون test-speed.py هست ) .
1python3 test-speed.py
و خروجی ( cpu ۴ هسته ای و رم ۴ گیگ در دبیان ۹ تستینگ با میزکار xfce ) :
123wait ... time left 14.401490211486816 up
حالا چطوره این کارو با ۱۶ میلیون بار انجام بدیم ؟
123wait ... time left 24.84433341026306 up
و حالا بهتره با زبان C تست کنیم ( البته با پرتاب یک میلیارد بار ! )
123456789101112131415161718#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 ( "time start: %s", asctime (timeinfo) ); for(i=0;i<1000000000;i++){ n=1+rand()%2; } time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "time end: %s", asctime (timeinfo) ); }
و نتیجه :
12time start: Thu Dec 20 11:10:10 2018 time end: Thu Dec 20 11:10:18 2018
+ البته اینکه پایتون در سادگی و امکانات تفاوت بسیار زیادی با c داره قابل انکار نیست و همچنین زبان c یک زبان کامپایلری هست ولی پایتون یک زبان مفسری ، درضمن من وقتی این کد رو نوشتم اصلا بهینه نبود وگرنه میشه از توابع سریعتر از randint استفاده کرد که سرعت رو بالاتر برد.