Incidencia #26576

株価データの形式と操作方法の変更

Abrir Fecha: 2011-10-20 14:16 Última actualización: 2013-03-05 14:51

Informador:
Propietario:
Estado:
Open [Owner assigned]
Componente:
(Ninguno)
Hito:
(Ninguno)
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Ninguno
Fichero:
Ninguno

Details

現在のデータ形式は1銘柄1ファイルになっていて、データ更新の際には直接ファイルを書き換えている。ファイル操作にはマルウェア対策ソフトの検査が入るため更新に時間が掛かる。また、ファイルが圧縮されていないためディスク使用量も比較的多い。

そこでまず1銘柄の全期間のデータをDeflateで圧縮して、全部つなげたものをデータ形式にする。プログラムで読み込む際には、Deflateで圧縮したまま全銘柄のデータをメモリに読み込む。各銘柄のデータは必要になったときにオンデマンドで伸張する。データ更新の際は、更新の必要なデータをすべて伸張してメモリに対して実行し、終了した時点で圧縮してファイルに書き戻す。

これによりデータ更新の速度が上がり、PtSimから複数の銘柄にアクセスする際のファイルアクセスを減らすこともできる。増えるメモリ使用量は130MB弱である。更新時には一時的にメモリ消費が増えるが、ファイルに書き戻す際に伸張したデータを破棄するのでメモリ消費は元に戻るはず。

Ticket History (3/8 Histories)

2011-10-20 14:16 Updated by: panacoran
  • New Ticket "銘柄データのデータ形式と操作方法の変更" created
2011-10-20 22:00 Updated by: panacoran
  • Summary Updated
2011-10-21 23:26 Updated by: darai
Comentario

常時メモリ使用量が130MB増えるのは個人的には気持ちが悪いです 必要になる銘柄だけ読み込み対象にする方式ではまずいでしょうか

2011-10-22 00:22 Updated by: darai
Comentario

失礼しました。ファイルアクセス数を減らしたいということですね。 どれくらい早くなるかにもよりますが、panacoranさんの環境で顕著に改善があるならこれでいきましょう

2011-10-22 08:10 Updated by: panacoran
Comentario

ファイルアクセス数よりもファイル数が効いているので、必ずしもオンメモリである必要はないです。データ形式を圧縮データを結合した1ファイルにするだけで十分です。データ更新は、まず更新データをメモリに置いて、あとで元のデータファイルとすりあわせて新しいデータファイルを作れば十分早くなると思います。

あとは#26572の問題ですが、

  1. 伸張してLRUで100銘柄保持で最大で10MBのメモリ消費
  2. 伸張して参照された銘柄をすべて保持で最悪の場合358MB
  3. 圧縮したまま参照された銘柄をすべて保持で最悪の場合123MB

の選択肢があります。ちなみに圧縮されたデータの伸張は一瞬でできます。

他銘柄を参照するパターンがどんなふうになりうるか僕には読めないので、daraiさんの判断に従います。オンメモリにするのは、こういう判断をしなくてもすむので楽でいいかと思っただけでして。

2011-10-22 12:16 Updated by: darai
Comentario

2にしましょう。現在のデータ量では何とか動く見込みですので。動かして問題が出たら3や、#26572ではじめに書いた範囲制限を新たに検討します。ちなみに、範囲制限は参照のあった日付の前後100日程度をキャッシュする方法を考えていました。こうすると100日程度ごとに読み込み直しが起きると想定されます。1は、全銘柄毎回参照する場合に再読み込みの頻度が多くなり、実行速度への影響があると思いました。

2011-10-22 13:56 Updated by: panacoran
Comentario

了解しました。その方向で実装してみます。

2013-03-05 14:51 Updated by: panacoran
Comentario

次のバージョンに先送りします。

Attachment File List

No attachments

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Entrar