- PR -

イメージファイルが存在しなかった場合

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/07/06
投稿数: 16
投稿日時: 2007-08-27 15:43
はじめまして、VS2005のVBでWEBアプリの開発を行っています。

画面にイメージ画像を表示する時、もしそのイメージ画像ファイルが存在
しない場合は、別のイメージ画像を表示するということをやりたいのですが
現在は、System.IO.File.Existsでファイルの存在チェックを行い、存在しない場合は
別のイメージ画像を表示しているのですが、System.IO.File.Existsを使用すると
現在の環境では負荷が大きくパフォーマンスに影響してしまっています。
System.IO.File.Existsを使用せずに、実現できる方法はありますでしょうか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-08-27 16:41
本当に逐次確認が必要なのであれば、File.Exists() よりも「軽い」手段は無いはずです。
(あるなら File.Exists() がその手法で実装されるはず)

もし、イメージファイルを格納しているディレクトリのファイル数が膨大なものであるなら、サブディレクトリに分割するなどすればパフォーマンスが向上する場合もあります。

それでも駄目なら、逐次確認をやめて、イメージファイルが「存在しているかどうか」を表すフラグをDBに記憶しておくなりといった工夫が必要になると思います。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-27 20:42
引用:

未記入さんの書き込み (2007-08-27 15:43) より:
はじめまして、VS2005のVBでWEBアプリの開発を行っています。
別のイメージ画像を表示しているのですが、System.IO.File.Existsを使用すると
現在の環境では負荷が大きくパフォーマンスに影響してしまっています。



Existsの負荷が大きい環境というのは、ずいぶんレアな状況ですね。
しかもWebアプリですか。
ネットワーク上のファイルでも確認しているのでしょうか?

渋木さんの言うように、
汎用的な方法でより高速なExistsのアルゴリズムがあるなら
それをつかってるはずですから、普通はExistsで十分なはずです。

汎用的でない方法、ファイルシステム依存、環境依存な方法でしたら
他にある場合もありますが、普通使いませんね。

ファイルシステムにおいて、ファイルの存在確認は最も高速にできるべき処理で、
普通はそう実装されてますので、
Existsが重いこと自体を問題にしたほうがいいと思いますよ。
1

スキルアップ/キャリアアップ(JOB@IT)