X軸が秒単位Y軸が何秒ごとの数を表したグラフを作る
X軸が秒単位、Y軸が何秒ごとの数を表したグラフを作る際に書いたコードなのですが、
データが増えすぎると処理時間が長くなるので、もっと処理速度の速いアルゴリズムはないでしょうか?
class JsonDate{
public $start_time;//エポックタイム
public $end_time;//エポックタイム
public $duration = 2;//単位は秒
function getDateCounts(){
$this->start_time = 1369706475;
$this->end_time = 1369706492;
/*
$dates配列の中身は昇順です
*/
$dates = array(
1369706475,
1369706477,
1369706478,
1369706479,
1369706481,
1369706486,
1369706486,
1369706487,
1369706489,
1369706492,
);
$dateCounts = array();
for($to = $this->start_time + $this->duration;$to < $this->end_time; $to+=$this->duration){
$from = $to - $this->duration;
if(!isset($dateCounts[$to]))$dateCounts[$to] = 0;
foreach ($dates as $i => $date){
if($from < $date ){
if($date <= $to){
$dateCounts[$to]++;
}else{
break;
}
}else{
unset($dates[$i]);
}
}
}
return $dateCounts;
}
}
$JD = new JsonDate();
$dateCounts = $JD->getDateCounts();
print_r($dateCounts);
結果は
(
[1369706477] => 1
[1369706479] => 2
[1369706481] => 1
[1369706483] => 0
[1369706485] => 0
[1369706487] => 3
[1369706489] => 1
[1369706491] => 0
)
お礼
ご親切に補足までしていただき、どうもありがとうございます。 まさにぴったりの訳です!とても助かりました!