Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加速C#程序在第一次运行时快速运行?_C#_Winforms_Caching - Fatal编程技术网

如何加速C#程序在第一次运行时快速运行?

如何加速C#程序在第一次运行时快速运行?,c#,winforms,caching,C#,Winforms,Caching,我有一个程序,将文件夹作为输入并处理其中的图像 当我第一次运行这个程序时,一秒钟内处理了大约5幅图像 在第二次运行中,它在一秒钟内处理20个图像 在随后的运行中,它在一秒钟内处理大约50个图像 我知道这肯定与缓存有关 我的问题是,我应该怎么做才能在第一次迭代中快速运行程序 这对我来说非常重要,因为我的客户每天只需要运行一次程序,因此在第一次运行时需要很快 更新1:这是一个基于windows的应用程序 谢谢。这里的瓶颈是访问磁盘上数据的速度 根据您所做的图像处理类型,您可以加快处理速度(通过使用更

我有一个程序,将文件夹作为输入并处理其中的图像

当我第一次运行这个程序时,一秒钟内处理了大约5幅图像

在第二次运行中,它在一秒钟内处理20个图像

在随后的运行中,它在一秒钟内处理大约50个图像

我知道这肯定与缓存有关

我的问题是,我应该怎么做才能在第一次迭代中快速运行程序

这对我来说非常重要,因为我的客户每天只需要运行一次程序,因此在第一次运行时需要很快

更新1:这是一个基于windows的应用程序


谢谢。

这里的瓶颈是访问磁盘上数据的速度

根据您所做的图像处理类型,您可以加快处理速度(通过使用更好/更快的库或优化),这将使每次连续运行中处理的图像数量更大

如果有(图像/秒)

20,30,50,50,50

然后它就会变成

21,32,53,53,53

30,45,75,75,75

取决于与加载相比处理所需的时间。您可以使用探查器或简单的测量加载/处理时间,以更好地了解在max(理论上,这是将处理时间减少到零)时您可能会赢得什么


如果你想让

50,50,50,50,50,50

然后通过软件是不可能的,因为你需要时间来加载图像,而这段时间必须花费。您可以尝试使用缓存来预缓存某些内容,但您将一无所获,因为程序的总执行时间在第一次运行时仍然相同,如果第二次运行(当缓存已经发生时),则仍将是平均值(总执行时间/总图像)

20,30,50,50,50

即使使用SSD,由于内存(Windows磁盘缓存)速度更快,所以在第一次运行时仍会有较低的速度。使用更快的磁盘(SSD RAID?=D)将显著提高加载速度(假设您现在有正常的HDD),但处理时间仍然相同



为什么要让程序运行得更快?可能是因为它必须手动运行,或者阻止用户使用Windows或您的其他软件?那么,在后台以非常低的速度进行此处理,以不干扰用户,怎么样?它可以与Windows一起启动,并与其他软件(甚至是其中的一部分)一起使用一些IPC来确定何时/什么/如何处理。作为一个很好的例子,以具有大量启发性(这意味着处理时间长)的非常好的防病毒软件为例,您不希望每天运行它来扫描所有内容(这需要很多时间,而且非常密集),但如果它在后台运行,则只在计划的时间(当PC使用较少时)执行每周/每月扫描的必要工作,那绝对没问题。

我知道这肯定与缓存有关。你在说什么?还有什么节目?控制台应用程序?winforms?wpf?或者什么?这可能是因为图像是由磁盘缓存的。获取更快的磁盘将是首要任务。@SriramSakthivel,这是一个windows程序。然后您只需加快程序的速度。尝试使用分析器查看代码的哪些部分花费的时间最多。我假设您正在使用线程加载图像?用户还可以查看此库,使用GDI Plus可以更快地加载图像: