よろしくです。
サーバとホスト間の送受信にかかるレスポンスを計測する為にlogデータから計測しようとしています。
データは約44MBくらいです。
logデータから必要な複数のデータを配列に格納していきます。ある程度(50行分とか)メモリしたら、その中で条件が会うものだけを比較し計算させ、使用したメモリは開放させ、使用していないメモリは保持し続けるようにしたいのですが、どのようにすればよろしいでしょうか?
>必要な複数のデータを配列に格納
>使用したメモリは開放させ、使用していないメモリは保持
→この場合のメモリとは?配列と同意?
配列で保持しておく事が決定事項なら、必要分の大きさの
配列を ReDim するくらいしか思いつきませんが。
全体のデータ量が可変で、同じ形のものを、取り出したり、
削除したり、追加したり、を繰り返すならいわゆるコレクション
が使いやすいんじゃないですか?。
過去ログ検索『コレクション』『Dictionary』『Collection』などでどうぞ。
…リストビューを非表示でアイテムのみ使ったり
ローカルのレコードセットを作ったり…ちょっと
ひねった方法もあると思います。
>この場合のメモリとは?配列と同意?
同意です。すみません。
>過去ログ検索『コレクション』『Dictionary』『Collection』などでどうぞ
調べてみます
>データは約44MBくらいです。
…どんなデータか書かれてませんが…テキストデータと仮定して、
大量のデータを処理するならデータベースに記録しておくという
方法もありますね。
>使用していないメモリは保持
この必要性と利用の仕方が伝わってこないので曖昧な回答しか
できませんが、データベースに登録して、必要なキーワードで
検索できるようにしてあれば、必要なデータのみ抽出するのが
簡単になると思います。
テキストを頭から読み込んで必要なデータが溜まった所で処理…と
いうのではなく、プログラム側から必要なデータのみ抽出して…と
いう流れで考えたいですね、ボクだったら。処理に不必要なデータ
は読み込みませんし、保持しません。
>…どんなデータか書かれてませんが
あるサーバとホスト間のやり取り(電文で情報の送受信が行われている)が書かれているlogデータです。すみません。
logの内容は送信した又は受信した時刻と電文の種類、それとユーザーナンバー等が書かれています。
>必要性と利用の仕方
サーバからホストへ情報を送信した際に、それに対する返答(ホスト→サーバ)が返って来るまでの時間をlogファイルから計測したいのです。
>logの内容は送信した又は受信した時刻と電文の種類、それとユーザーナンバー等が書かれています。
>サーバからホストへ情報を送信した際に、それに対する返答(ホスト→サーバ)が返って来るまでの時間をlogファイルから計測したいのです。
つまりは対になる”送信”と”受信”のメッセージが特定されればいいわけですか…
受信した時刻が送信時刻以降、電文の種類が同じ、ユーザナンバーが同じ…としても
受信は完全に特定されないでしょうね。同じユーザが連続送信した場合、また、通信
異常や受信待ちで対応する受信ログが存在しない場合など。Key となりうる何かを
決めるか?それとも同じ条件の送信が複数存在した場合は過去のものを通信異常とし、
最新のものを有効にするとか?…質問の前に仕様をもう少し煮詰めないといけませんね。
同じ条件が重なるとコレクションのコレクションが必要になるかも(?)…工夫すれば
必要ないですが。[VB6.0]ではコレクションのコレクションできたかなぁ…[VB.NET]
では SortedList に SortedList を格納したりしましたが…ま、ユーザー定義型(Type)
があるからどうにでもなりますか。コレクションに配列を格納しても良いし。
ちなみに…数Mのテキストファイルくらいなら過去ログに実際の処理時間を含めて
参考になるものがありますね。Key でテキスト検索しただけでも実現できそう。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200309/03090037.txt
とか…これは過去ログ検索『比較』で引っ掛かります。データの形式を工夫すれば
テキストファイルのまま検索しても問題なく処理できそうな感じ。配列にデータを
保持する必要があるのか?色々な過去ログを見てよく検討して下さい。
>質問の前に仕様をもう少し煮詰めないといけませんね
申し訳ありませんでした。
もう少し考えてから質問するようにします。
ツイート | ![]() |