PHP, kötü olması gerekmez bir işlevi içine kodu sarma?

6 Cevap php

Bir sayfada birçok birçok kez ben yazıyı ayarlamak ve bu gibi PHP değerleri almak zorunda kalacak

I just want to know if it is better to just continue doing it the way I have above or if performance would not be touched by adding it into a function like in the code below?

Bu kod yazmak için çok easiar yapmak ancak ekstra fonksiyonu yapma pahasına sayfada çağırır olacaktır.

Ben bu yüzden o "geliştirmek için yazmak easiar veya hızlı" yapma gibi hızlı benim için daha önemli olan mümkün olduğunca kod yapma dünyada her zaman var

Herhangi bir tavsiye takdir ve kolay geliştirmek için yapar hangisi hakkında hiçbir şey lütfen, ben) = burada saf bir performans konuşuyorum

<?php
function arg_p($name, $default = null) {
    return (isset($_GET[$name]))?$_GET[$name]:$default;
}

$pagesize = arg_p('pagesize', 10);

$pagesize = (isset($_GET['pagesize'])) ? $_GET['pagesize'] : 10;

?>

6 Cevap

Eğer have all the time in the world, neden sadece test yoksa?

<?php
// How many iterations?
$iterations = 100000;

// Inline
$timer_start = microtime(TRUE);
for($i = 0; $i < $iterations; $i++) {
  $pagesize = (isset($_GET['pagesize'])) ? $_GET['pagesize'] : 10;
}
$time_spent = microtime(TRUE) - $timer_start;
printf("Inline: %.3fs\n", $time_spent);

// By function call
function arg_p($name, $default = null) {
  return (isset($_GET[$name])) ? $_GET[$name] : $default;
}

$timer_start = microtime(TRUE);
for($i = 0; $i < $iterations; $i++) {
  $pagesize = arg_p('pagesize', 10);
}
$time_spent = microtime(TRUE) - $timer_start;
printf("By function call: %.3fs\n", $time_spent);
?>

Benim makinede, bu neredeyse 10 kat inline yürütme lehine oldukça net sonuçlar verir. Ama gerçekten bunu fark için yineleme bir çok ihtiyacımız var.

(Ben hala boşa zaman var olduğunu gösterir bile bana bu yanıtlayan eğer, olsa işlevini kullanın ;)

Tabii muhtemelen bir işlev içine sararak olmayan bir performans yararı alırsınız. Ama bu fark olurdu? Gerçekten değil.

Sizin zaman kaydetmek istiyorum CPU kaynaklarının yaklaşık küçük daha değerlidir.

Ben bunu yüzlerce kat yapıyorsun sürece hız farkı fark olacağını sanmıyorum.

İşlev çağrısı, performans isabet, ama aynı zamanda sürdürülebilirlik düşünmek gerekir - işlevi sararak gelecek değişiklikler kolaylığı (ve kopyala-yapıştır olduğu için kötü) olabilir.

Performansı gerçekten etkilenmez olmaz iken, html dışında kod alır şey daha iyi akışı.

Lütfen arg_p() sizin için mümkün olmaz ölçmek-şöyle dursun bile bin aramalar notice - performans farkı. Eğer ekstra "inline" kod artı her inlined kopya değişiklikleri artı katma karmaşıklığı ve yazım hatası veya rasgele hata ihtimali daha yüksek çoğaltmak gerekir ne zaman harcayacak vakit yazarak geçirecek zamanı size ölçülemez daha pahalı olacak performans artışı. Aslında, o zaman gerçekten böyle gerçekten nesil süre vb etkileyen alanları bulmak için kod profil, veritabanı tasarımı geliştirmek olarak ne sayar optimize harcanan olabilir ..

Sen temiz kod tutmak daha iyi olacak. Bu size sırayla gerçekten sayar optimize yatırım olabilir zaman kazandıracak.