私のwinformsアプリは、共有にある実行可能ファイルを実行する必要があります。exeは約50MBです(これはsetup.exeタイプのファイルです)。私のアプリは、さまざまな速度のさまざまなマシン/ネットワークで実行されます(一部は高速ですが、一部は10baseTの速度のように非常に低速です)。
共有から直接ファイルを実行する方が良いですか、それともローカルにコピーしてから実行する方が効率的ですか?私は、ユーザーの迷惑を最小限に抑えるという観点から話しています。
私のwinformsアプリは、共有にある実行可能ファイルを実行する必要があります。exeは約50MBです(これはsetup.exeタイプのファイルです)。私のアプリは、さまざまな速度のさまざまなマシン/ネットワークで実行されます(一部は高速ですが、一部は10baseTの速度のように非常に低速です)。
共有から直接ファイルを実行する方が良いですか、それともローカルにコピーしてから実行する方が効率的ですか?私は、ユーザーの迷惑を最小限に抑えるという観点から話しています。
ネットワーク経由で実行するよりも、ローカルで実行する方が常に優れています。
地元の方がいいです。コピーは、ファイルの各バイトを1回だけ読み取りますが、それ以上でもそれ以下でもありません。実行すると、キャッシュなどから外れて再びプルされるコードに再度アクセスする場合があります。
セットアッププログラムとして、エンジンは何らかのCRCまたはその他の整合性チェックも実行する必要があると思います。つまり、とにかくファイル全体を読み取っています。
アプリケーションが小さく、実行時に多くの異なるリソースをロードする必要がない場合は、ネットワーク上で実行しても問題ありません。ネットワーク上で実行する場合は、ファイルを手動でダウンロードしてから2つの読み取りコードを使用して実行するのではなく、コードが1回読み取られる(ダウンロードしてメモリにロードする)ため、さらに望ましい場合があります。たとえば、ネットワーク上で時計ウィジェットアプリケーションを実行できます。
一方、アプリケーションが実行時に大量のリソースを読み取る場合は、リソースの各読み取りがネットワークを経由するため、ネットワークを介して実行することは絶対に悪い考えです。これは非常に低速です。たとえば、ネットワーク上でEclipseを実行したくない場合があります。
考慮すべきもう1つの要素は、同時にアプリケーションにアクセスする同時ユーザーの数です。多数ある場合は、アプリケーションをローカルにコピーして、そこから実行する必要があります。
OSは、実際に実行される前に、常にファイルをローカルの一時フォルダーにコピーすると思います。コピーを取得した後、ネットワークとの間の往復はありません。これは1回だけ発生します。これは、ブラウザの動作のようなものです...最初にファイルを取得してローカルに保存し、次に保存したローカル温度から外れた場合に実行します。つまり、自分用にコピーを保持する場合を除いて、手動でコピーする必要はありません。