Süreleri Ölçme
Kodun ne kadar süre çalıştığını ölçün.
Süreleri Ölçme, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Kodunuzun Süresini Ölçme
Bazen bir görevin ne kadar sürdüğünü bilmek istersiniz: bir dosyayı yüklemek, bir döngüyü çalıştırmak veya bir bölüm oluşturmak gibi. Süreleri ölçmek, yavaş noktaları bulup iyileştirmenize yardımcı olur.
Lua bunun için iki araç sunar: kaba zamanlama için os.time, hassas zamanlama için os.clock.
Kronometre Yaklaşımı
Temel fikir basittir: İşten önce time değerini kaydedin, işi yapın, işten sonra time değerini yeniden kaydedin ve ardından çıkarma işlemi yapın.
İki değer arasındaki fark geçen süreyi verir. Bu başlat-durdur yaklaşımı, her zamanlayıcının temelidir.
local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)os.time Kaba Hassasiyetlidir
os.time tam saniyeleri sayar; bu nedenle bir saniyeden kısa hiçbir şeyi algılayamaz. Arka arkaya yapılan iki hızlı çağrı çoğu zaman sıfır fark gösterir.
Kısa görevler için daha hassas bir clock gerekir; burada os.clock devreye girer.
local a = os.time()
local b = os.time()
print(b - a)os.clock ile Tanışın
os.clock() saniye cinsinden bir sayı döndürür; ancak bu sayı kesirli bir ondalık değerdir. Programınızın kullandığı CPU time'ı yüksek çözünürlükte ölçer.
Bu özellik, hızlı işlemleri saniyenin kesirlerine kadar ölçmek için onu ideal hâle getirir.
print(os.clock())Bir Döngüyü Ölçme
Ne kadar sürdüğünü görmek için bir döngüyü iki os.clock okumasının arasına alın. Aradaki fark, saniye cinsinden geçen time'ı verir.
Daha büyük döngüler daha uzun sürdüğünden bu, yaklaşımları karşılaştırmanın hızlı bir yoludur.
local t1 = os.clock()
local sum = 0
for i = 1, 1000000 do sum = sum + i end
local t2 = os.clock()
print("Took", t2 - t1, "seconds")Sonucu Biçimlendirme
Uzun bir ondalık sayıyı okumak zordur; bu nedenle düzenli sayıda basamak göstermek için string.format kullanın.
Buradaki %.3f, noktadan sonra üç basamak yazdırarak milisaniye düzeyinde ayrıntı sağlar.
local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))os.time ve os.clock Karşılaştırması
Doğru aracı seçin. “Kullanıcı giriş yaptığından beri kaç saniye geçti?” gibi gerçek yaşam aralıkları için os.time kullanın.
Kod performansını ölçmek için os.clock kullanın; çünkü hassastır ve duvar clock'ı yerine CPU time'ını izler.
Yeniden Kullanılabilir Zamanlayıcı İşlevi
Bu yaklaşımı bir işlevin içine alabilirsiniz. İşlev, verilen bir işlevi çalıştırır, süresini ölçer ve sonucu yazdırır.
Bu sayede zamanlama mantığınız tek bir yerde tutulur ve kolayca yeniden kullanılabilir.
local function timeIt(fn)
local s = os.clock()
fn()
print(string.format("%.4f s", os.clock() - s))
end
timeIt(function() for i=1,100000 do end end)Saatler Arasındaki Fark
Uzun gerçek yaşam aralıkları için iki os.time değeri üzerinde os.difftime kullanmak en anlaşılır yöntemdir. Bu işlev aralığı saniye cinsinden döndürür.
Sonucu anlaşılır biçimde göstermek için dakika elde etmek üzere 60'a, saat elde etmek üzere 3600'e bölün.
local started = os.time({year=2025, month=1, day=1, hour=9})
local ended = os.time({year=2025, month=1, day=1, hour=17})
local hours = os.difftime(ended, started) / 3600
print(hours, "hours")Dakika ve Saniyeleri Gösterme
Bir süreyi dakika ve saniye olarak göstermek için tamsayı bölmesiyle kalan bulma işleciyi kullanın.
// tam dakikaları, % ise kalan saniyeleri verir.
local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))Basit Geri Sayım Hesabı
Kalan time'ı göstermek için fikirleri birleştirin. Hedef zamandan şu anı çıkarın, ardından saniyeleri dakika ve saniye olarak biçimlendirin.
Bu işlem düzenli bir geri sayım görünümü sağlar.
local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))Hızlı Kontrol
Hassas zamanlama için en uygun aracı seçin.
Özet
Bir süreyi ölçmek için önce ve sonra bir clock okuyun, ardından çıkarma işlemi yapın. Tam saniyeli gerçek yaşam aralıkları için os.time, hassas ve kesirli saniyeli kod zamanlaması için os.clock kullanın.
Sonuçları string.format ile biçimlendirin; ham saniyeleri // ve % kullanarak dakika ve saniyelere dönüştürün. Bu araçlarla bir döngüden bir iş gününe kadar her şeyin süresini ölçebilirsiniz.
Sıkça Sorulan Sorular
“Süreleri Ölçme” dersi ücretsiz mi?
Evet — “Süreleri Ölçme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Süreleri Ölçme” dersinde ne öğreneceğim?
Kodun ne kadar süre çalıştığını ölçün. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Süreleri Ölçme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.