2012-07-06 27 views
3

我正在寫一個wordpress部件插件。它應該輸出一些HTML代碼,看起來應該像這樣哪個更快:輸出緩衝區或回聲

<a href="link1">link1title</a> 
<a href="link2">link2title</a> 
<a href="link3">link3title</a> 
<a href="link4">link4title</a> 
<a href="link5">link5title</a> 

我運行一個for循環輸出從2個陣列的鏈接和標題,我可以做,在兩種不同的方式:

<?php for ($i = 0; $i < $x; $i++) 
    echo '<a href="'.$links[$i].'">'.$titles[$i].'</a>'; 
?> 

或者,我可以用這樣的:

<?php ob_start(); 
for ($i = 0; $i < $x; $i++) {?> 
    <a href="<?php echo $links[$i];?>"><?php echo $titles[$i];?></a> 
<?php ob_get_flush();?> 

的例子實在是微不足道。有更多的HTML代碼,並涉及更多的變量。 因爲在c/C++中printf和cout之間存在速度差異,所以我想知道使用輸出緩衝區和echo之間是否存在速度差異。

另外,哪一個更好用?

回答

3

當然有。與echo,你傾銷到輸出流。與ob_start,你被轉儲到輸出流之前創建然後必須被處理的緩衝液(可選參數到ob_start

由於第二一個基本上是「做一些東西,然後執行精確的相同於第一一個」,很明顯,它會慢一些。

但是,如果正確使用,則好處遠遠大於缺點。

+0

什麼您_if使用correctly_意思? – 2012-07-06 19:46:24

+2

'ob_start'旨在與回調一起使用,在將內容發送到服務器之前對內容進行後處理。它具有可以使用'header'功能的副作用如果在發送任何內容之前調用ob_start,任何時候都可以開啓,但除了調用它之外沒有目的是沒有用的。 – 2012-07-06 19:47:31

+0

你每次打電話給echo時都忽略了通過網絡向客戶端輸出內容的主要缺點,不是嗎?除非我不明白'ob_start'的含義是什麼,我認爲它有一些事情需要做(與其他許多事情一樣),防止服務器在每次調用echo時都必須通過互聯網傳遞內容... http ://stackoverflow.com/a/2832179/576767 – 2014-11-05 15:43:13