Açılış / kapanış etiketleri &

4 Cevap php

Bu saçma bir soru olabilir, ama PHP nispeten yeni birisi olarak sık sık açılması ve HTML şablon kodu PHP kapatma etiketleri herhangi bir performans ile ilgili sorunlar varsa, ben merak ediyorum, ve eğer öyleyse, ne açısından en iyi uygulamalar olabilir PHP etiketleri ile çalışıyor?

Sorum kapanış etiketleri önemi / doğruluğu hakkında değil, ya da kod türü diğerinden daha okunabilir, daha ziyade belge / yürütülmekte derlenecek ve performans üzerinde olabilir ne etkisi nasıl hangi.

, Göstermek aşağıdaki iki uç dikkate:

Mixing PHP and HTML tags:

<?php echo
   '<tr>
       <td>'.$variable1.'</td>
       <td>'.$variable2.'</td>
       <td>'.$variable3.'</td>
       <td>'.$variable4.'</td>
       <td>'.$variable5.'</td>
   </tr>'
?>
// PHP tag opened once

Separating PHP and HTML tags:

<tr>
   <td><?php echo $variable1 ?></td>
   <td><?php echo $variable2 ?></td>
   <td><?php echo $variable3 ?></td>
   <td><?php echo $variable4 ?></td>
   <td><?php echo $variable5 ?></td>
</tr>
// PHP tag opened five times

Sadece o hiç fark etmez duymak olsa bile, bu konuda bazı görüşlerini dinledikten ilgi olacaktır.

Teşekkürler.

4 Cevap

Eğer doğru almak için 3 basit kural:

  • Hayır sözdizimi sorun performansını etkileyebilir. Veri işleme yapar.
  • Sadece sonuçları ile desteklenen performans Speak profiling.
  • Prematüre optimizasyonu tüm kötülüklerin köküdür

Performans sorunları anlamak oldukça zordur. Bu yeni başlayanlar bunu dikkate almak için değil tavsiye edilir. Onlar her zaman önemsememek şeyler etkilendim ve gerçek önemli şeyler görmek için başarısız çünkü. Sırf deneyim eksikliği.

Sorunuza aynı. Hiç bazı farkı alırsınız düşünün. Hatta büyük bir, diyelim ki, bir yöntemi daha hızlı 2 kat. Oh my, 2 kere! Ben onu seçmek ve iyi benim app optimize edilmiş, daha hızlı şimdi% 50 çalışacak!

Wrong. Değil 50%. Göreceksiniz ve hatta bu hız artışını ölçmek asla. Eğer bütün komut dosyası çalışma zamanı sadece% 0,01 almak bir kısmını optimize çünkü.

Büyük HTML tabloları gibi, browser işlemek için uzun bir zaman alabilir. Eğer oluşturmak için aldı çok daha fazla.

Profiling is a key word in the performance world. One can trash any performance related question with no doubts if there is no word "profiling" in it. At the same time profiling is not rocket science. I's just measuring of runtime of different parts of your script. Can be done with some profiler, like xdebug, or even manually, using microtime(1).

Learn to profile before asking performance questions. And learn not to ask performance questions if there is no real reasons for it. Prematüre optimizasyonu tüm kötülüklerin köküdür.

Ben 50.000 satır ile test yaptıracağız ve çok 1 tag yöntemi çok yankı ekledim

for ($j=0;$j<30;$j++) {
    foreach ($results as $key=>$val){
    ?>
       <tr>
           <td><?php echo $results[$key][0]?></td>
           <td><?php echo $results[$key][1]?></td>
           <td><?php echo $results[$key][2]?></td>
           <td><?php echo $results[$key][3]?></td>
           <td><?php echo $results[$key][4]?></td>
           <td><?php echo $results[$key][5]?></td>
           <td><?php echo $results[$key][6]?></td>
           <td><?php echo $results[$key][7]?></td>
           <td><?php echo $results[$key][8]?></td>
           <td><?php echo $results[$key][9]?></td>
           <td><?php echo $results[$key][10]?></td>
           <td><?php echo $results[$key][11]?></td>
           <td><?php echo $results[$key][12]?></td>
           <td><?php echo $results[$key][13]?></td>
           <td><?php echo $results[$key][14]?></td>              
       </tr>
    <?php 
    }
}

Süre1: 31,15542483 Saniye

for ($k=0;$k<30;$k++) {
    foreach ($results as $key1=>$val1){
        echo
           '<tr>
               <td>'.$results[$key1][0].'</td>
               <td>'.$results[$key1][1].'</td>
               <td>'.$results[$key1][2].'</td>
               <td>'.$results[$key1][3].'</td>
               <td>'.$results[$key1][4].'</td>
               <td>'.$results[$key1][5].'</td>
               <td>'.$results[$key1][6].'</td>
               <td>'.$results[$key1][7].'</td>
               <td>'.$results[$key1][8].'</td>
               <td>'.$results[$key1][9].'</td>
               <td>'.$results[$key1][10].'</td>
               <td>'.$results[$key1][11].'</td>
               <td>'.$results[$key1][12].'</td>
               <td>'.$results[$key1][13].'</td>
               <td>'.$results[$key1][14].'</td>              
           </tr>';
    }
}

duration2: 30,23169804 Saniye

for ($l=0;$l<30;$l++) {
    foreach ($results as $key2=>$val2){     
           echo'<tr>';
               echo'<td>'.$results[$key2][0].'</td>';
               echo'<td>'.$results[$key2][1].'</td>';
               echo'<td>'.$results[$key2][2].'</td>';
               echo'<td>'.$results[$key2][3].'</td>';
               echo'<td>'.$results[$key2][4].'</td>';
               echo'<td>'.$results[$key2][5].'</td>';
               echo'<td>'.$results[$key2][6].'</td>';
               echo'<td>'.$results[$key2][7].'</td>';
               echo'<td>'.$results[$key2][8].'</td>';
               echo'<td>'.$results[$key2][9].'</td>';
               echo'<td>'.$results[$key2][10].'</td>';
               echo'<td>'.$results[$key2][11].'</td>';
               echo'<td>'.$results[$key2][12].'</td>';
               echo'<td>'.$results[$key2][13].'</td>';
               echo'<td>'.$results[$key2][14].'</td>';              
           echo'</tr>';
    }
}

duration3: 27,54640007 Saniye

Oldukça biraz daha hızlı gibi orijinal 2 yöntemler arasında çok fark, ama daha az birleştirme @ körü ile bakar

Ben 1 seferde bu kadar veriyi gerekir şüphe beri, ben birçok etiketleri kullanmaya devam edeceğiz sanırım, kodu girinti düzeni daha doğru kıvrımlara ve 'görünümü kaynak' görünüyor

Pseudo-kod çevirmek kolay kod iyidir. Bu, yukarıda açıklanan örneklerle ortaya konulur. Hangi söylemek için daha uzun sürer?

"Start php, do this 30 times:, then stop php.  Print this.  Start php, print this, stop php. Print this.  Start php, print this, stop php.Print this.  Start php, print this, stop php. Print this.  Start php, print this, stop php.Print this.  Start php, print this, stop php. Print this.  Start php, print this, stop php.Print this.  Start php, print this, stop php..."

"Start php, do this 30 times: print this, then add this to that, then add this to that, then add this to that, then add this to that, then add this to that, then add this to that..."

"Start php, do this 30 times: print this, print this, print this, print this, print this, print this, print this..."

Şahsen ben yapardım:

"Start php, define this, do this 30 times: add this to that.  Print." 

Tercüman çalışır ve neden bir yol diğerinden daha hızlı nasıl hakkında bir teknik açıklama, bir acemi için ilgisizdir. Bu sadece başparmak kurallarını bilmek en iyisidir:

  1. Basit iyidir.
  2. Tek bir sayfaya sığmıyorsa o (yıkmak) çok fazla yapıyor.
  3. Eğer bir dizin kartı sözde kodu elle yazmak mümkün değil, çok karmaşık.

Genel sonuç basit ise daha etiketlerini kullanın. Dönemi.

Bu ile gerçek bir sorun bellek kullanımıdır. String birleştirme ve kitle eko-ing katlanarak bellek kullanımını artırabilir.

Eğer php etiketi Spam Eğer kodu okunamaz hale gelir.

En iyi çözüm bir şablon motoru kullanmak ve tamamen kod ve sunum karıştırma kaçınmaktır.