php echo 数据到 html 性能

标签 php html mysql

我以表格的形式向我的网站添加一些数据。实际上一切正常,但我想测试一些大数据的性能。情况非常糟糕。这是我的结果:

tablesize | time
-----------------
10x20     | 0.22s
100x20    | 3.29s
1000x20   | 28.75s

我的问题是哪种方式更好地显示结果以及原因:

1:

<?php
   for($i=0; $i<count($array); $i++){
       echo "<div id='...' class='...Ä style='...'>"
       for($i=0; $i<count($array); $i++){
           echo "<div style='...'>".array[$i][$j]."</div>";
       }
       echo "</div>";
   }
?>

2:

<?php
   for($i=0; $i<count($array); $i++){
?>
       <div id='...' class='...Ä style='...'>
<?php  
       for($i=0; $i<count($array); $i++){
?>
           <div style='...'> <?php echo array[$i][$j]; ?> </div>
       <?php } ?>
       </div>
<?php   } ?>

也许有人有一些额外的技巧,让我可以快速实现数据可视化。我读了一些关于 MySQL 结构的文章,我相信我的数据库看起来不错。那么我可以做些什么来优化数据的读取。

最佳答案

正如 scaisEdge 所说,对数据进行分页。 此外,还有一些更改可以使您的代码更快。

  1. count($foo) 在 for 循环之外
  2. 使用前增量而不是后增量
  3. 使用“str”和连接代替“str”

这是一个“基准”(没有输出):

<?php
$array = array();
for($i = 0; $i < 1000; ++$i){
    $array[] = range(0, 20, 1);
}

$t = microtime(true);
for($k = 0; $k < 5000; ++$k){
   for($i=0; $i<count($array); $i++){
       $a = "<div id='...' class='...Ä style='...'>";
       for($j=0; $j<count($array[$i]); $j++){
           $a = "<div style='...'>".$array[$i][$j]."</div>";
       }
       $a = "</div>";
   }
}
echo 'Count and post : ' . (microtime(true) - $t) . "\n";


$t = microtime(true);
for($k = 0; $k < 5000; ++$k){
   $c = count($array);
   for($i=0; $i<$c; $i++){
       $a = "<div id='...' class='...Ä style='...'>";
       $c2 = count($array[$i]);
       for($j=0; $j<$c2; $j++){
           $a = "<div style='...'>".$array[$i][$j]."</div>";
       }
       $a = "</div>";
   }
}
echo 'No count and post : ' . (microtime(true) - $t) . "\n";


$t = microtime(true);
for($k = 0; $k < 5000; ++$k){
   $c = count($array);
   for($i=0; $i<$c; ++$i){
       $a = "<div id='...' class='...Ä style='...'>";
       $c2 = count($array[$i]);
       for($j=0; $j<$c2; ++$j){
           $a = "<div style='...'>".$array[$i][$j]."</div>";
       }
       $a = "</div>";
   }
}
echo 'No count and pre : ' . (microtime(true) - $t) . "\n";


$t = microtime(true);
for($k = 0; $k < 5000; ++$k){
   $c = count($array);
   for($i=0; $i<$c; ++$i){
       $a = '<div id="..." class="...Ä style="...">';
       $c2 = count($array[$i]);
       for($j=0; $j<$c2; ++$j){
           $a = '<div style="...">'.$array[$i][$j].'</div>';
       }
       $a = '</div>';
   }
}
echo 'No count and pre and \' : ' . (microtime(true) - $t) . "\n";

// @scaisEdge
$t = microtime(true);
for($k = 0; $k < 5000; ++$k){
   foreach($array as $subarray){
       $a = '<div id="..." class="...Ä style="...">';
       foreach($subarray as $v){
           $a = '<div style="...">'.$v.'</div>';
       }
       $a = '</div>';
   }
}
echo 'Foreach : ' . (microtime(true) - $t) . "\n";

?>

输出:

Count and post : 46.050459861755
No count and post : 30.590306043625
No count and pre : 29.880299091339
No count and pre and ' : 29.930299043655
Foreach : 29.120290994644

尽管看起来很奇怪,' 似乎比 "慢。 PHP 检查 "内部的字符串变量并替换它,而 ' 字符串只是...字符串。不执行任何操作。

有人知道这种缓慢的情况吗?

关于php echo 数据到 html 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41890110/

相关文章:

html - 奇怪的 <DIV> 行为

php - 转到基于 mySQL 查询的 url

php - 更新新记录时恢复以前更新的记录 MySQL PHP

mysql - 如何更改所有 ID、JOIN 和连接的记录

javascript - 在 php 中运行另一个脚本

javascript - yii2 不起作用 $this->redirect

javascript - 在手机上使用 window.location.hash 和 anchor 标签

php - 如何在 Facebook 应用程序中使用 jQuery

php - 如何在 PHP 中读取网页?

mysql - 如何检查一个字符串是否包含列MySQL中的任何字符串