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

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトルセットアップデータ取得時間が次第に長くなる
記事No7329
投稿日: 2015/01/18(Sun) 08:27
投稿者VBAオンチ
お世話になります。

過去4年分のデータを最新版DVDからセットアップしようとしていますが、1つ
の区切りごとに取得時間が長くなっていくことに気づきました。メモリの解放な
どがまずいのでしょうか。

セットアップデータの[RACE]も元々長くかかりましたが、こんなものかと我慢
してきましたが、[SLOP](坂路調教)などでたまたま再起動したら、最初は1月分
が15分程度のものが、次は30分、60分、90分と取得する月が替わるごとに長くな
っていくことに気づきました。

[SLOP]の場合ですが、
retVal=JVLink1.JVRead(buf,200000,filename)で取得したデータを
DmyCData(1 To 50000) As Stringで定義した配列に格納し、retVal=-1の区切り
でディスクにセーブし、配列やbufをクリアしますが、時間が長くなるのは変わ
らないようです。
JVReadのbufは内部で解放されるようなので特に外部からなにもしなくてもいい
とは思いますが、buf=""をしてもしなくても変わりません。

JVOpenで取得した後、次のような感じでJVReadで解読しています。

p=0 'Dataの数(Long)
retVal=1
While retVal<>0
retVal=JVLink1.JVRead(buf,200000,filename)

if retVal>0 Then
p=p+1
DmyData(p)=Left(buf,Len(buf)-2) '配列に格納

Elseif retVal=-1 Then 'データ区切り
  'データをディスクに書き込み(省略)

'メモリ解放
  Erase DmyData()

'配列再定義
  Redim DmyData(1 to 50000) As String

'bufクリア
buf=""

End If

Wend

JVLink1.JVClose

書き込み時間の方は一瞬で終わります。
メモリ解放(Erase DmyData()は配列再定義を行うので不要かと思いますが、時
間短縮の効果はないようです。

普段は非蓄積系データを使っており、セットアップデータを使うのは初めてで
す。最初はJVGetsで[RACE]データを取得していましたが、遅いので普段のJVRead
に変えましたが、やはり遅い。あれこれ試行錯誤で取得しているので、4年分を
全部取得するのにほぼ一週間かかっています。最初から時間が次第に長くなって
いたのかもしれません。
パソコン側の問題かもしれませんが、何かヒントがあれば教えてください。

なお、非蓄積系の方は特に今までと変わらない感覚です。
よろしくお願いします。

タイトルRe: セットアップデータ取得時間が次第に長くなる
記事No7363
投稿日: 2015/01/21(Wed) 17:46
投稿者JRA-VANソフトサポート
JRA-VANソフトサポートの竹下です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

大変申し訳ございませんが、ご記載いただいたソースからでは
パフォーマンスの低下につながるような箇所を特定することは
出来ませんでした。

現在の情報から申し上げることが出来る点として、JVGetsを
使用した方が全体的に改善が見込まれると推測されます。
(JVGetsはJVReadよりもパフォーマンス性を改善した
メソッドになります)

つきましてはJVGetsのご利用をご検討いただければと思います。


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

タイトルRe^2: セットアップデータ取得時間が次第に長くなる
記事No7367
投稿日: 2015/01/22(Thu) 11:11
投稿者VBAオンチ
JRA-VANソフトサポート 竹下様

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

最後はJVGetsに変えてやってみましたが、若干速度は上がるようですが、次第
に時間が長くなる現象は同じでした。

結局、残り1年分を2,3か月ごとにいったん処理を終了して、fromtimeを変
更して取得しましたが、疲れました。

またよろしくお願いします。

タイトルRe^3: セットアップデータ取得時間が次第に長くなる
記事No7692
投稿日: 2015/02/14(Sat) 12:31
投稿者Drafear   <dragonex@hotmail.co.jp>
メモリリークではないでしょうか?

ウィンドウを閉じる