PHP を使用してヒストグラムを迅速に生成できる関数を探しています。単純な関数を完成させるには現時点では遅すぎます。
PHP を使用してヒストグラムをすばやく生成できる関数を探しています。単純な関数を完成させるには現時点では遅すぎます。
初心者として、私は CSS を操作して簡単なヒストグラムを生成することしかできませんが、データが 25,000 を超えると、関数は非常に遅くなり、データが 10,000 を少し超えると、ヒストグラムを生成するのに時間がかかります。グラフは10秒以上です。この速度は遅すぎます。改善にご協力ください。
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><html> <style type="text/css"> .chart { font-family: Tahoma; font-size: 12px; border: 1px solid #ccc; width:auto; float: left; margin: 0; padding: .4em .1em; height:auto; } .chart ul { margin:0px; height:auto; text-align: center; display:block; background-repeat: no-repeat; background-position: center bottom; background-attachment: fixed; } .chart li { list-style: none; float: left; width: 35px; height:200px; text-align: center; display:block; background-repeat: no-repeat; background-position: center bottom; background-attachment: fixed; } .b { display: block; width:15px; background-color:#000; margin-right: auto; margin-left: auto; } .a { height:12px; width:35px; background-color:#fff; padding: 0px; } </style> <?php $beg_time = microtime(true); $beg_time *= 1000 * 1000; create_chart2(); function create_chart2() {//x一维数组直接输出图表 //思路先得到一个一维数组,然后统计值的个数,最后排序输出 //echo '<table>'; $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 '<div class="chart"> <p>一区</p> <ul>'; foreach($array_values as $key=>$value){ echo '<li><span class="a" style="margin-top:'.(210-$value*$rates).'px;">' .$value.'</span><span class="b" style="height:'.($value*$rates).'px;">'.'</span><span class="a">'.$key.'</span></li>' ; } echo '</ul> </div> <p style="clear: both"></p>' ; //echo '</table>'; } $end_time = microtime(true); $end_time *= 1000 * 1000; echo "Total time used : " . ($end_time - $beg_time) . "ms" . PHP_EOL; ?> </html>
がわかります。 $s_time = マイクロタイム(true); $d = 範囲(1, 33); $r = 配列(); for($i=0; $i<font color="#e78608">------解決策------------------</font><br>ぜひチェックしてみてください: ChartDirector ソフトウェアが利用可能になりましたクラック、非常に便利 <div class="clear"></div>