PHP: Zaman fonksiyonları hızı, ama çok hızlı değil mi?

3 Cevap php

Ben GERÇEKTEN regex vb hızlarını test etmek isteyen oldum ve php.net üzerine bu örnek vardır:

$time_start = microtime(true);

// Sleep for a while
usleep(100); // Or anything for that matter..

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

EDIT: Ne demek) usleep yerine (fonksiyonları büyük bir döngü oynamak oldu. Her zaman 1 altında her zaman bir çok rasgele sayısını gösterir. Bir kriter değer hiçbir şey gösterir!

3 Cevap

Zamanlayıcılar böyledir. Işlev etrafında bir döngü sarın. Eğer milisaniye isterseniz mikrosaniye, 10 ^ 3 kez ölçmek istiyorsanız bunu 10 ^ 6 kez çalıştırın. Fazla duyarlık 2 ondalık basamak almak için beklemeyin.

Usleep işlevi olduğunu artırmayı deneyin, çok düşük bir değer belirterek, mikrosaniye zaman gerekiyor:

usleep(2000000); // wait for two seconds

usleep fonksiyonu da Windows sistemlerde zor olduğu bilinmektedir.

Yoksa sadece kendi parametre örneğin olarak belirtilmesi saniye ile uyku işlevini kullanabilirsiniz:

sleep(10); // wait for 10 seconds

Çoğaltmak, ve no one benden daha hızlı bir bilgisayarı var olamaz. Yürütme, sekiz çekirdek, i7 mimarisi 16 konu. Sizin PHP inşa veya OS bırakıyorsa olmalıdır. Bu tam kodunuzu çalışıyor.

`--> php tmp.php
Did nothing in 0.00011587142944336 seconds
.-(/tmp)---------------------------------------------------(pestilence@pandemic)-

Bu usleep ile (1000000) ... (1 saniye)

`--> php tmp.php
Did nothing in 1.0000479221344 seconds
.-(/tmp)---------------------------------------------------(pestilence@pandemic)-

Bilginize, ben 5,0 geçmiş (bu durumda) herhangi bir fark olduğunu, PHP 5.3.0 değil kullanıyordum.

Kod çalıştırmak için bir saniyeden daha less alıyor? Eğer öyleyse, bu senin kriterler açıklamak istiyorum. Ben bir makale için bir şey profile, ben milyonlarca bazen ... zaman benim rutin 10.000 's çalıştırın. Bilgisayarlar hızlı bu gün vardır.

Ben geniş yineleme birkaç numune almak ve bunları bir araya ortalamasını neden kadarıyla "rastgele" bir parçası gider gibi, bu. O da orada standart sapma atmak için zarar vermez. Ayrıca, MP3 akarsu veya test sırasında video oynatmak için değil hatırlıyorum. : P