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

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.














