Ben her zamanki saat (), herkesin burada tavsiye, bazı nedenlerle ekrandan çizim veya okuma dosyaları gibi herhangi bir yan etkisi olmayan statik kod için bile, çalıştırmak çalıştırmak için çılgınca saptığını buldum. Bunun nedeni CPU'nun güç tüketimi modlarını, işletim sisteminin farklı öncelikler vermesini vb.
Bu nedenle, clock () ile her seferinde aynı sonucu güvenilir bir şekilde almanın tek yolu, ölçülen kodu bir döngüde birkaç kez (birkaç dakika) çalıştırmak ve derleyicinin optimize etmesini önlemek için önlemler almaktır: modern derleyiciler kodu önceden hesaplayabilir yan etkiler olmadan bir döngü içinde çalışır ve döngüden çıkarır, örneğin her yineleme için rasgele girdi kullanmak gibi.
Bir diziye yeterince örnek toplandıktan sonra, bir dizi bu diziyi sıralar ve medyan adı verilen orta öğeyi alır. Ortalamadan daha iyidir, çünkü antivirüsün tüm CPU'yu kapladığı veya işletim sisteminin bir miktar güncelleme yapması gibi aşırı sapmaları atar.
İşte medyan yakınındaki değerlerin ortalamasını alan C / C ++ kodunun yürütme performansını ölçmek için basit bir yardımcı program: https://github.com/saniv/gauge
Kendimi hala kod ölçmek için daha sağlam ve daha hızlı bir yol arıyorum. Muhtemelen herhangi bir işletim sistemi olmadan çıplak metal üzerinde kontrollü koşullarda kod çalıştırmayı deneyebilir, ancak bu gerçekçi olmayan sonuç verecektir, çünkü gerçekte işletim sistemi devreye girer.
x86, çalıştırılan gerçek talimatları içeren bu donanım performans sayaçlarına sahiptir, ancak işletim sistemi yardımı olmadan erişmek zordur, yorumlanması zordur ve kendi sorunları vardır ( http://archive.gamedev.net/archive/reference/articles /article213.html ). Yine de şişe boynunun doğasını araştırmaya yardımcı olabilirler (veri erişimi veya bu verilerdeki gerçek hesaplamalar).