SORU
29 Temmuz 2009, ÇARŞAMBA


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
29 Temmuz 2009, ÇARŞAMBA


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 : http://kcachegrind.sourceforge.net/html/pics/KcgShot3Large.gif
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 !

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011
  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • RealPapaPit

    RealPapaPit

    16 Mart 2009