tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルDictionaryのAddが遅い
記事No15946
投稿日: 2014/08/05(Tue) 16:14
投稿者PAN-MUGI
VB6.0で次のようなコーディングをしています。

Dim FNmDic As Variant
Dim HelpFile As File

Set FNmDic = CreateObject("Scripting.Dictionary")
FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path

このFNmDic.Addに2秒もかかってしまいます。

HelpFileは、先頭3文字が数字のファイルを指しており、キーの役目をしています。
HelpFileがローカルにあるファイルをさしている場合は、遅くないのですが、
ほかの端末の共有フォルダにあるファイルを指すとAddが遅いです。
また、この現象はエンドユーザの環境で発生し、私の開発環境では発生していません。

Addを1秒以下にしたいのですが、何か解決の糸口はあるでしょうか?
なおOSは、エンドユーザ、開発環境ともにWindows7です。

[ツリー表示へ]
タイトルRe: DictionaryのAddが遅い
記事No15947
投稿日: 2014/08/05(Tue) 19:55
投稿者魔界の仮面弁士
> Dim FNmDic As Variant
As Object が適切かと。
(もしくは、参照設定した上で As Scripting.Dictionary)


> このFNmDic.Addに2秒もかかってしまいます。
遅いのは Dictionary ではなく、File では無いでしょうか?

Name や Path を String 変数までに取り出すところと、
その変数を Add する処理とに分離して、再度時間測定してみてください。

もしも File が遅いようであれば、FileSystemObject ではなく、
Dir 関数を使う方向で再検討してみては如何でしょう。

[ツリー表示へ]
タイトルRe^2: DictionaryのAddが遅い
記事No15948
投稿日: 2014/08/06(Wed) 09:24
投稿者PAN-MUGI
返信ありがとうございます。

> > このFNmDic.Addに2秒もかかってしまいます。
> 遅いのは Dictionary ではなく、File では無いでしょうか?
そこになかなか気づきませんでした。

> Name や Path を String 変数までに取り出すところと、
> その変数を Add する処理とに分離して、再度時間測定してみてください。
このあたりを確認し、処理を検討したいと思います。

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

[ツリー表示へ]