تست سرعت پایتون (:
به نام خدا
امروز میخواستم یه تست کنم ببینم که پایتون که تازه شروع کردم توی محاسبات خفن چقدر زمان طی میکنه ؟
البته این مقایسه از نظر تولید اعداد رندم هست.
برنامه که می خواستم بنویسم این بود .
برنامه ای بنویسید که ۱۰ میلیون بار پرتاب سکه را به صورت تصادفی حساب کند و مدت زمان طول کشیدن عملیات را در خروجی چاپ کند
خوب اینم کد ها :
Python (3) :
import 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 هست ) .
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 ( "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) );
}
و نتیجه :
time start: Thu Dec 20 11:10:10 2018
time end: Thu Dec 20 11:10:18 2018
+ البته اینکه پایتون در سادگی و امکانات تفاوت بسیار زیادی با c داره قابل انکار نیست و همچنین زبان c یک زبان کامپایلری هست ولی پایتون یک زبان مفسری ، درضمن من وقتی این کد رو نوشتم اصلا بهینه نبود وگرنه میشه از توابع سریعتر از randint استفاده کرد که سرعت رو بالاتر برد.
مطلبی دیگر از این انتشارات
آموزش برنامه نویسی شی گرا در زبان سی شارپ (C#) – راهنمای ایجاد اولین پروژه سی شارپ در ویژوال استودیو کد (Visual Studio Code) و سیستم عامل ویندوز
مطلبی دیگر از این انتشارات
جاوا اسکریپت چیست ؟ و چه تفاوتی با EcmaScript دارد؟
مطلبی دیگر از این انتشارات
برنامه نویسی به زبان کاتلین - انواع داده در کاتلین - بخش دوم