我的 winforms 应用程序需要运行一个共享的可执行文件。exe 大约 50MB(它是 setup.exe 类型的文件)。我的应用程序将以不同的速度在许多不同的机器/网络上运行(有些很快,但有些非常慢,比如几乎没有 10baseT 的速度)。
直接从共享中执行文件更好,还是在本地复制文件然后执行它更有效?我说的是最不惹恼用户的问题。
我的 winforms 应用程序需要运行一个共享的可执行文件。exe 大约 50MB(它是 setup.exe 类型的文件)。我的应用程序将以不同的速度在许多不同的机器/网络上运行(有些很快,但有些非常慢,比如几乎没有 10baseT 的速度)。
直接从共享中执行文件更好,还是在本地复制文件然后执行它更有效?我说的是最不惹恼用户的问题。
本地比较好。副本将读取文件的每个字节一次,不多也不少。在执行时,您可能会重新访问超出缓存的代码等并再次被拉取。
作为一个安装程序,我假设引擎也想做某种 CRC 或其他完整性检查,这意味着它无论如何都在读取整个文件。
如果您的应用程序很小,并且不需要在运行时加载许多不同的资源,那么可以通过网络运行它。它甚至可能更可取,因为如果您通过网络运行它,则代码被读取(下载并加载到内存)一次,而不是手动下载文件然后运行它需要 2 个读取代码。例如,您可以通过网络运行时钟小部件应用程序。
另一方面,如果您的应用程序在运行时确实读取了大量资源,那么通过网络运行它绝对是一个坏主意,因为每次读取资源都将通过网络进行,这非常慢。例如,您可能不想通过网络运行 Eclipse。
另一个需要考虑的因素是有多少并发用户将同时访问应用程序。如果有很多,您应该将应用程序复制到本地并从那里运行。
在本地执行它总是比在网络上运行它更好。
我相信操作系统总是在实际执行之前将文件复制到本地临时文件夹。获得副本后没有往返网络的往返,它只发生一次。这有点像浏览器的工作方式......它首先检索文件,将其保存在本地,然后在它保存它的本地临时文件之外运行。换句话说,除非您想为自己保留一份副本,否则无需手动复制。