PHP头条
热点:

求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。该如何解决


求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。
求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。

由于初学,仅会操控CSS生成个简易的柱状图,但我的函数在数据大于25000条的时候超级慢,1万多一点的时候生成图的时间是10多秒。这速度太慢了,求大侠优化。

PHP code


';
       $returnarray2=array();
       $db1=new mysqli('localhost','admin','admin','ssq') ;
       $sql_query='select l1,l2,l3,l4,l5,l6 from hmk_temp_1 as bb limit 0,1000';
       $res1=$db1->query($sql_query); 
       while($row1=mysqli_fetch_array($res1,MYSQLI_NUM)) {
         $returnarray2=array_merge($returnarray2,$row1);
        }
       $array_values=array_count_values($returnarray2);
       ksort($array_values);
       //print_r($array_values);
       $rates=round(200/max($array_values),2);
       echo '$rates='.$rates;
       echo ' 

一区

    '; foreach($array_values as $key=>$value){ echo '
  • ' .$value.''.''.$key.'
  • ' ; } echo '

' ; //echo ''; } $end_time = microtime(true); $end_time *= 1000 * 1000; echo "Total time used : " . ($end_time - $beg_time) . "ms" . PHP_EOL; ?>


------解决方案--------------------
先找出瓶颈是在什么地方

有没考虑过使用 pChart?
------解决方案--------------------
Google有一个库提供。楼主可以查一下。
------解决方案--------------------
输出的 Total time used 看似巨大,但由于计量单位有误,就不足信了
microtime(true) 返回的是秒, * 1000 * 1000 后为微秒,你把它当做毫秒,就放大了 1000 倍

代码简单并不代表运行效率就高,看一下这个测试就知道了
PHP code
$s_time = microtime(true);

$d = range(1, 33);
$r = array();
for($i=0; $i<1000; $i++) {
  shuffle($d);
  $r = array_merge($r, array_slice($d, -6));
}
$r = array_count_values($r);
echo microtime(true) - $s_time, PHP_EOL;

$s_time = microtime(true);
$d = range(1, 33);
$r = array_fill(1, 33, 0);
for($i=0; $i<1000; $i++) {
  shuffle($d);
  foreach(array_slice($d, -6) as $k) $r[$k]++;
}
echo microtime(true) - $s_time, PHP_EOL;

------解决方案--------------------
建议楼主看看:ChartDirector软件,现在有破解的,很好用

www.phpzy.comtrue/phprm/52017.htmlTechArticle求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。该如何解决 求一利用php快速生成柱状图的函数,现以完成一个简易函数比较慢。 求一利用php快速生成柱状图的函数...

相关文章

PHP之友评论

今天推荐