PHP を使用してヒストグラムを迅速に生成できる関数を探しています。単純な関数を完成させるには現時点では遅すぎます。解決方法

WBOY
リリース: 2016-06-13 13:27:58
オリジナル
982 人が閲覧しました

PHP を使用してヒストグラムを迅速に生成できる関数を探しています。単純な関数を完成させるには現時点では遅すぎます。
PHP を使用してヒストグラムをすばやく生成できる関数を探しています。単純な関数を完成させるには現時点では遅すぎます。

初心者として、私は CSS を操作して簡単なヒストグラムを生成することしかできませんが、データが 25,000 を超えると、関数は非常に遅くなり、データが 10,000 を少し超えると、ヒストグラムを生成するのに時間がかかります。グラフは10秒以上です。この速度は遅すぎます。改善にご協力ください。

PHP コード
<!--

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>
ログイン後にコピー


-----解決策---------------- - ---
まずはボトルネックがどこにあるのかを見つけてください

pChart の使用を検討したことがありますか?
------解決策------------------
Google にはライブラリが提供されています。ホストはそれをチェックできます。
------解決策------------------
出力合計使用時間は膨大に見えますが、測定単位が間違っているため信頼できません。
microtime(true) は秒、* 1000 * 1000 を返します。これをミリ秒として扱うと、大きくなります。 . 1000 回

単純なコードが高い動作効率を意味するわけではありません。このテストを見れば、
PHP コード
 がわかります。
$s_time = マイクロタイム(true);

$d = 範囲(1, 33);
$r = 配列();
for($i=0; $i<font color="#e78608">------解決策------------------</font><br>ぜひチェックしてみてください: ChartDirector ソフトウェアが利用可能になりましたクラック、非常に便利 <div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート