PHPを使ったスピード重視の集計について
以下のログがあります。
---
日付 時分 A B C カウント
2006/8/3 11:00 1 4 8 84
2006/7/4 17:04 3 5 4 47
2006/8/4 13:30 1 4 6 32
2006/3/3 15:15 5 1 8 8
2006/5/8 18:20 3 3 3 43
・・・(以下、100万行位続く)・・・
---
このログを"時間"単位でA,B,C毎の"カウントを合計"したく、イメージとしては以下のテーブルを作りたいと思っています。(時間,A,B,Cの組み合わせでログに出て来なかったらテーブルに出力する必要無し。順番も特に問わない。)
---
日付 時間 A B C カウント合計
2006/8/3 11 1 4 8 84323
2006/8/5 13 4 8 3 9793
・・・・
---
処理スピードを重視して、メモリ上で行う前提で以下の方式を考えました。
多段配列を使い、ログが出るたびに
$count["2006/8/3"]["11"]["1"]["4"]["8"] = 7672
のような配列を作ります。もし、配列があるのならカウント部分を足し算します。
最後に配列全部をファイルに書き出すという方法です。
しかし、ログの量があまりにも多くやはり処理時間がかなりかかります。またプログラムも多段配列の表記にすると非常に見辛い状態です。何か別のアルゴリズムか手法により、スピード重視で処理する方法をご存知であればご教授ください。
前提がPHPを使わなければいけない&DB使えないという環境です。
よろしくお願いします。
お礼
もう、素晴らしいです。(T-T) できれば、昨日聴けたら良かったなぁ・・と思いますが、今日でも、充分、OKです。 こんな曲も浮かんできました。 「only my railgun」 https://www.youtube.com/watch?v=Upr4zxUTxFE しかし、本当は、こんな曲だったりします・・・↓ https://www.youtube.com/watch?v=PiUJV3qz5oU 御回答、ありがとうございました。
補足
回答の追加です。 「泣いてもいいんだよ」←このタイトルが、実に、いいです。(T-T)」 本ですと、こんな感じ、です↓ http://www.php.co.jp/books/jidou/sagaso_list.php?keyword=%BF%B4%A4%CE%CD%A7%A4%C0%A4%C1%A5%B7%A5%EA%A1%BC%A5%BA いくつになっても、大人なんだか子供なんだか・・・苦笑