Nasıl kod hızını PHP ile yazılmış ölçebilir miyim?
Nasıl daha hızlı yürütmek söyleyebilir miyim? bir yazılım ölçen var mı?
CEVAP
Var(en az)iki çözüm :
Oldukça "naif" bir kullanarak microtime(true) tobefore ve sonra bir kısmının kodu almak ne kadar zaman geçti sırasında yürütme ; diğer cevapları söyledi ve örnekler verdi zaten, o yüzden ben kazandım"t ki çok daha fazla.
Bu güzel bir çözüm istiyorsanız kriter birkaç talimatları ; kıyaslama iki tür fonksiyonları, örneğin ... daha iyi yapıldığı için binlerce kez, emin olmak için herhangi bir "perturbating element" dir ortalama.
Eğer bir dizi seri hale getirmek için nasıl bilmek istiyorsanız, bu gibi bir şey, yani :
$before = microtime(true);
for ($i=0 ; $i<100000 ; $i ) {
serialize($list);
}
$after = microtime(true);
echo ($after-$before)/$i . " sec/serialize\n";
Mükemmel değil, ama yararlı ve çok zaman ayarlamaya gerek yok.
< / ^ hr .
Eğer bütün bir komut dosyası içinde bir sürü zaman alır belirlemek istiyorsanız oldukça iyi çalışan başka bir çözüm, kullanımı :
- Komut dosyası için profil oluşturma veri oluşturmak için Xdebug uzantısı
- Profil oluşturma veri okumak ve size sunan yazılım bir şeyler okunabilir. Bunların üçünü biliyorum :
- Webgrind ; web arayüzü, herhangi bir Apache PHP sunucu üzerinde çalışması gerekir
- WinCacheGrind ; yalnızca windows
- KCacheGrind ; muhtemelen sadece Linux ve linux ; tercih ederim, btw
Profil dosyaları almak için, ve Xdebug yapılandırmak ; Dokümantasyon Profiling PHP Scripts sayfasına bak.
Ben genellikle ne, varsayılan olarak profiler etkinleştirmek değil(çok büyük dosyalar oluşturur ve işler yavaşlar)veri ALMAK gibi , ama bir parametre XDEBUG_PROFILE
denilen gönderme imkanı kullanmak lazım sayfası için profil etkinleştirin.
Benim php profil ile ilgili kısmı.ını bu gibi görünüyor :
xdebug.profiler_enable = 0 ; Profiling not activated by default
xdebug.profiler_enable_trigger = 1 ; Profiling activated when requested by the GET parameter
xdebug.profiler_output_dir = /tmp/ouput_directory
xdebug.profiler_output_name = files_names
(Daha fazla bilgi için belgelerine bakın)
KcacheGrind C program bu görüntü var :
PHP ile tamamen aynı türden alacaksın ;-)
(KCacheGrind ile, yani ; WinCacheGrind KCacheGrind...) kadar iyi değil
Bu kesinlikle bulmasına yardımcı olur bazen uygulama ... ve zaman alır ne güzel bir görünüm sağlarher şey yavaşlıyor, bu işlev ^^
Xdebug CPU zaman PHP ile geçirdi sayar ; PHP veritabanından bir cevap (örnek) beklerken, çalışmıyor unutmayın ; sadece bekliyor. Xdebug DB isteği fazla zaman almaz sanırım.
Bu SQL server, PHP, vb profilli olmalıdır
Bu yararlı olduğunu umuyoruz :-)
İyi eğlenceler !
Nasıl iki resim arasındaki farkı ölçeb...
Nasıl bir yönlendirme sayfası jQuery k...
Nasıl bir dize başka bir dize içeriyor...
Nasıl Git deposu için boş bir dizin ek...
Nasıl dosyaları zaman uyumsuz olarak y...