各位好:
一般為了閱讀上便利,習慣會在常用的流程上換行\n或是加上tab鍵,
以讓版面清爽。
例如:
if($pos)
{
echo "hello 我在echo前端有使用tab排版喔!";
echo "hello 我在echo前端有使用tab排版喔!";
}
跟以下無縮排方式
if($pos){echo "hello 我在echo前端無使用tab排版喔!";
echo "hello 我在echo前端無使用tab排版喔!";}
當然一般程式不會這麼少行,
PHP是直譯式語言,
會一行一行去讀取判斷,
應該也會針對一些特殊字,像是註解"//"、tab、空格、換行等符號進行判斷,
然而程式碼一旦多了起來、讀取的流量也變大、越多人讀取,
舉例來說,像是google,
前端的HTML 幾乎會塞成1行~不做換行~可減少流量
但是後端的做法就不得而知。
是否這些判斷也會對後端機器效能產生一定的影響,
有沒有相關資料是在探討這些的呢?
不過,這邊當然不是說要把每段程式都塞到一行,這樣程式設計師修改也很累人.
如果是直譯式程式,註解跟縮排一定是會影響程式效率的。
但 C# JSP PHP 這些都不是《純直譯式》程式,而是先編譯成中間碼,再執行。
所以就要考慮到這個中間碼是否有去掉註解跟縮排了。假如會去掉,那麼會影響效率的,就只剩執行前的編譯動作(C#, JSP),或是第一次執行的自動編譯(PHP)了。
我沒反編譯過 C# 與 JSP 的 class,不知道它們是否能還原回縮排與註解,但 PHP 被 Zend_Encoder 編過之後,是可以反編譯還原縮排與註解的,可見並沒有做去除。因此如果想要加快 PHP 的速度,可以用 php -w test.php > test.striped.php 來把你的 php程式中的註解跟縮排通通去掉,串成一行。醬子就會加快速度了。如果有看過 google 站台的 js 檔,就會發現它們都是去掉註解跟縮排的。不但執行快,傳送也快。
HTML & JavaScript檔案比較有差
因為輸出檔案會因為空格、Tab、斷行符號減少而縮小
Server Script...應該沒差吧...
會有差的應該是這樣....
<pre class="c" name="code">
<?php
echo "<h1>Hello \n";
echo "world</h1>";
?>
跟
<?php
echo "<h1>Hello ";
echo "world</h1>";
?>
[/code]
雖然,輸出的結果看起來一樣,但是,在實際的HTML裡頭,應該可以看到上面的案例多了一個斷行符號,也就是輸出的HTML會多了一個byte的資料,server到client端的資料流量,自然也變多了
加了一個"\n"
可以讓"瀏覽原始碼"的時候看到HTML原始碼會自動換行,類似檢視"<br>"的結果
不過正常時候很少看到有人會加上\n
除非是在除錯 等情況下吧~
畢竟這是給瀏覽器讀取就好~
例如跑HTML<tr>表格區塊迴圈時,可加上\n以方便除錯
<pre class="c" name="code">
echo "<table>\n";
while(10){
echo "<tr><td>xxx</td></tr>\n"
}
echo "</table>";
如此輸出HMTL碼時,就可以看出粒粒分明~
這樣才不會每個</tr>都跟下一個<tr>以及內部文字都糾結再一行,如果欄位值再多的話,有錯誤時真的不好抓是哪邊HMTL有錯了~~
其實,可以去拿jquery這類的程式碼來看看...
所謂compact或mini版本,都是把那些多餘的符號拿掉...
為的就是縮短程式檔案本身,以加快檔案傳輸的速度。
\n並不等於<br />
兩者的用途是不同的。
\n是為了html原始碼的編排,換句話說,方便程式人員或美工人員檢視html用。
<br />是為了讓html上顯示換行的效果。
還有這樣的效率
<pre class="c" name="code">
<?php
echo '<h1>Hello \n';
echo 'world</h1>';
?>
會比
<pre class="c" name="code">
<?php
echo "<h1>Hello \n";
echo "world</h1>";
?>
來的好~以PHP來說。