Fortran’da bir kod parçası için geçen süreyi ölçmek

fortran

Açıkcası geçen süreyi ölçmek çok basit bir konu olsa da Fortran için internette pek çok farklı yöntemle karşılaşılabiliyor. Benim ihtiyacım olan birçok ardıl kod parçasını aynı değişkenlerle ölçebileceğim ve her biri için ayrı bir çıktı üretecek bir kod parçası idi. Bunun için ETIME ve DTIME maalesef kullanılamıyor. Bu iki işlev de birikimli (kümülatif) ölçümler yapıyor. Yani her çağırdığınızda ölçtüğünüz zaman toplanarak devam ediyor. Fortran’a da çok hakim olmadığım için tarray dizisinden değerler çekip onlarla oynamak da pek işime yaramadı. Onlar yerine cpu_time işlevini kullandım. cpu_time’ı kullanabilmek için öncelikle iki adet real türünde değişkene ihtiyacınız var.

1
real :: start, finish

diyerek subroutine’inizin başında bu değişkenleri tanımlayabilirsiniz. Ardından ne kadar zaman harcadığını ölçmek istediğiniz kod parçasını alttaki kod parçaları ile sarmalamanız gerekmektedir.

1
2
3
4
5
6
7
8
call cpu_time(start)
 
Kodunuz ....
 
call cpu_time(finish)
print '("Süre = ",f6.3," saniye.")', finish-start
finish = 0
start = 0

Aslen çok basit bir kod parçası olsa da Fortran bağlamında yüzlerce dökümanın arasında bunu bulmak anlamsız bir süreye malolabiliyor. Hele de DTIME ve ETIME ile vakit kaybetmek gerçekten beter. cpu_time bu süreci kısaltacaktır.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
This entry was written by yaksari , posted on Cuma Nisan 24 2009at 11:04 am , filed under Programlama and tagged , , . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

Leave a Reply