مقایسه سرعت محاسبه اعداد اول کمتر از ۱۰۰۰۰ در گنو/لینوکس و ویندوز
ویرایش اول : 27 بهمن 1393
در این پست ٫ به بررسی سرعت حل چند نرم افزار برنامه نویسی علمی می پردازم. زبان های fortran , matlab , scilab و octave. نرم افزار matlab در این ازمون نسبت به octave و scilab موفق عمل کرده و با فاصله ی اندکی پس از fortran به جواب رسیده است. بی شک این نرم افزار و زبان برنامه نویسی آن بسیار بهینه و قابل اعتماد است ٫ ولی این مثال نمی تواند یک نتیجه کلی در این مقایسه ها باشد. در اینده مقایسه های دیگری را انجام خواهم داد .
بروز رسانی: 17 مهر 1398
پس از چند سال دوباره تصمیم گرفتم تست بالا رو انجام بدم و البته باتوجه به اینکه واقعا ورژن های قبلی و کدی که نوشته شده رو نداشتم دوباره کد نوشتم و در انتهای پست کدهای اجرا شده رو می تونید مشاهده کنید . بطور کلی انتظاری که از نرم افزارهایی چون octav و scilab داشتم برآورده نشد و انتظار می رفت در طی این چند سال بهبود می یافتند .
پ.ن. این تست فقط یک محک ساده است و ولی می توانید نوع عملکرد کد های مختلف برای حلقه های تو در تو رو ببینید .
پ.ن. اگه دوستان هر کدوم از این نرم افزار ها رو دارند لطفا کد های قرار داده شده رو اجرا کنند و زمان اجرا رو به من اطلاع بدهند.
Mtlab/octave
clear tic number =10000 for i = 2:number mode=0; for j =2:i if mod(i,j)==0 mode=mode+1; end end if mode==1 disp(i) end end toc
scilab
// Display mode mode(0); // Display warning for floating point exception ieee(1); clear tic number = 10000 for i = 2:number mode = 0; for j = 2:i if pmodulo(i,j)==0 then mode = mode+1; end; end; if mode==1 then disp(i) end; end; toc
python 2
def tic(): #Homemade version of matlab tic and toc functions import time global startTime_for_tictoc startTime_for_tictoc = time.time() def toc(): import time if 'startTime_for_tictoc' in globals(): print "Elapsed time is " + str(time.time() - startTime_for_tictoc) + " seconds." else: print "Toc: start time not set" tic() number = 10000 for i in range(2,number+1): mode=0 for j in range(2,i+1): if i%j ==0: mode+=1 if mode==1: print i toc()
python 3
def tic(): #Homemade version of matlab tic and toc functions import time global startTime_for_tictoc startTime_for_tictoc = time.time() def toc(): import time if 'startTime_for_tictoc' in globals(): print ("Elapsed time is " + str(time.time() - startTime_for_tictoc) + " seconds.") else: print ("Toc: start time not set") tic() number = 10000 for i in range(2,number+1): mode=0 for j in range(2,i+1): if i%j ==0: mode+=1 if mode==1: print(i) toc()