çıkışı bir çizgi yankılanan veya php kapatma etiketleri ve html kodunu yazarak arasında herhangi bir fark var mı?

9 Cevap php

Ben bu cevabı neredeyse eminim "Hiç yok!" ama yine de soracağım. Eğer html bir çizgi echos PHP bir koşullu deyim varsa, orada herhangi bir fark performans-bilge bu 2 örnek arasında:

<?php if ($output) { ?>
  <h2><?=$output;?></h2>
<?php } ?>

ve

<?php if ($output) { echo "<h2>".$output."</h2>"; } ?>

9 Cevap

Cevabı tam anlamıyla "hiç yok" dir. Düşünmek

<span>
<?php
  echo $myMessage;
?>
</span>

ve

<?php
  echo "<span>\n";
  echo $myMessage;
  echo "</span>";
?>

Ben (önce bir kaç yıl) hafızasından gidiyorum, ama bu noktada Zend baytkodu derleyici aslında aynı çıktıyı üretir; "Literal" HTML metni içeren bir yankı deyimi içine derlenmiştir.

Eğer tavsiye edilmez etkin short_open_tags, yoksa <?= ?> etiketleri, geçersizdir.

Eğer mikro optimizasyonu içine gerçekten iseniz, değişen ile başlamalıdır

echo "<h2>".$output."</h2>";

içine:

echo '<h2>', $output, '</h2>';

(Değişken genleşme ve hiçbir dize birleştirme)

Neden bu kadar çok PHP geliştiricileri bu tür şeyleri optimize etmek için çalışıyorlar? Tek ve çift tırnakla ilgili bir tartışma olarak aynı. Bu performans farklılıkları any şekilde madde ise, gerçekten başka bir dil kullanıyor olmalıdır.

Bu mikro optimizasyonu denir, bu tür performans farklılıkları güvenemez

Ama bu birkaç nano saniye içinde performans iyidir

<?php if ($output) { ?>
  <h2><?=$output;?></h2>
<?php } ?>

Performans pratikte ihmal edilebilir ve endişesi değmez olacaktır. Daha okunabilir ve o (çiftleşmiş) kullanılacak olması gerekiyordu olarak php kullanır gibi ilk seçenek tercih edilen yöntem olacaktır.

Teorik olsa, ben dili ayrıştırmak için daha az olduğu gibi ilk yöntem daha hızlı olacağını tahmin ediyorum. Düz html metin sadece işleme olmaksızın iade edilir.

Onu daha kolay çoğu HTML düzenlemek için yapar gibi 1 seçeneğini tercih - İç içeriği ile divlere ile ilgili özel zaman.

Performans her iki durumda da ihmal edilebilir düzeydedir.

Neden sadece bunu test değil? koklama ya da en sevdiğiniz tarayıcınızda bir sayfa için kaynak bir göz alarak.

I had to know so ran a few different blocks in a loop of 10000 iterations. Lesson learned: Don't bother. Write the code to be readable and maintainable. Use the MVC pattern... :)

time: 2.66 mikrosaniye

<? if ($output) { ?>
    <h2><?=$output;?></h2>
<? } ?>

time: 1.65 mikrosaniye

<? if ($output) { echo "<h2>$output</h2>"; } ?>

time: 1.65 mikrosaniye

<? if ($output) { echo "<h2>".$output."</h2>"; } ?>

time: 1.64 mikrosaniye

<? if ($output) { echo '<h2>'.$output.'</h2>'; } ?>