JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトル検証ツールの内部処理について
記事No8620
投稿日: 2016/03/16(Wed) 21:05
投稿者白老
セットアップに要する時間の大部分を占めているのは JVRead/Gets であり、特
にレコード種別 SE のファイルの処理には大きな時間が掛かります。1.2GHz と
いう非力な PC ですと一か月分で 2 分以上を要します。1 秒間に数十キロバイ
トしか読み込めていない計算です。これは自作プログラムだけでなく、サンプル
プログラムでも同様です。

さて同じ PC にて検証ツールを実行すると、ほとんど一瞬で、これらのプログ
ラムとは比較にならないほど高速に、読み込みが行われているように見受けられ
ます。まるで全て JVSkip しているような速さですが、表の処理が終われば任意
のセットアップ用データを開くことができる点から、全部読み込んでいるものと
判断しました。

検証ツールはどのようにして、この高速処理を実現しているのでしょうか?公
開されていない API でも使用しているのでしょうか?お答えできる範囲で構い
ませんので、どうかご教示ください。

タイトルRe: 検証ツールの内部処理について
記事No8622
投稿日: 2016/03/18(Fri) 14:10
投稿者JRA-VANソフトサポート
JRA-VANソフトサポートの竹下です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

> 検証ツールはどのようにして、この高速処理を実現しているので
> しょうか?公開されていない API でも使用しているのでしょう
> か?お答えできる範囲で構いませんので、どうかご教示ください。

DataLab.検証ツールは、JV-Linkに用意されたメソッドを使用して
作成されております。
非公開のAPIなどは使用しておりません。

メソッド自体の処理時間には相違は無いと考えられますので、
その前後の処理に原因がある可能性がございます。


以上、よろしくお願いいたします。

タイトルRe^2: 検証ツールの内部処理について
記事No8624
投稿日: 2016/03/18(Fri) 20:35
投稿者白老
ご回答ありがとうございます。

JV-Link のメソッドのみを使用している点は了解しました。しかしパフォーマ
ンスの差がどうにも理解できません。自分のプログラムだけでなく、JVDTLABSDK
441.lzh に含まれるプログラムも同様に時間がかかる状況です。

また、前述の 1.2GHz の PC において JVRead の一回の呼び出しにかかる時間
を計測しましたところ、約 26.4 ミリ秒でした。レコード種別による違いはほと
んど無いようです。SE のファイルには 5000 個以上のレコードがありますから
、-1 が返されるのに 138 秒以上かかる計算になり、実際その程度かかっていま
す。セキュリティ系も念のため解除して計測しましたが、効果はありませんでし
た。

現段階では何が違っているのか全くわかりませんが、もう少し試行錯誤してみ
るつもりです。

ところで検証ツールの動作についてもう一つ質問があります。このツールを起
動して読み込みを実行し、しばらく待つと表が作成されます。この表を右クリッ
クするとファイルの一覧が表示され、その中の一ファイルをクリックすることで
ファイルを開く事ができます。この動作がどうなっているのかと思いました。

読み込み中のメモリ使用量やファイル書き込み量は、タスクマネージャで見る
限り全く増加していません。よって、この段階では実際に全データを取得してい
るのではなくて、ファイル名だけを取得して JVSkip で読み飛ばしているのでは
ないかと推測しました。

この推測が正しいなら、一覧にあるファイルをクリックした時点で改めて読み
出している事になりますが、JVOpen にも JVRead/Gets にも、任意のファイルか
ら読みだすような機能は無いと理解しています。これは読み出し方法の工夫によ
るものでしょうか。それとも自分の理解が間違っていて、実際には任意のファイ
ルから読みだすことが可能なのでしょうか。

あるいは推測自体が間違っていて実際に全データを読み込んでいるとするなら
ば、メモリも消費せず、ディスクに書き出すこともせずにどうやって保持してい
るのか分かりません。そのような技術があるのでしょうか?

タイトル解決しました
記事No8625
投稿日: 2016/03/19(Sat) 10:02
投稿者白老
確かに JVOpen および JVRead のみを用いまして、一つの SE ファイルの読み込
みにかかる時間を 138 秒以上から 1 秒未満に短縮することができました。

ありがとうございました。

ウィンドウを閉じる