我必须结合使用大约100个图像(png文件)。 问题不在于它们的组合,运行得足够快。 但是从存储中加载它们需要4秒。 那是太多的时间了。
所以我可以使用TPL或多线程,但它仍然太慢。 我怎样才能加快速度?不幸的是,将所有图像保存在主存储器中是不可取的。
图像非常小:从4KByte到10KByte
我正在加载图片:
Image img = Image.FromFile(file);
答案 0 :(得分:3)
在您的情况下,创建多个线程不会提高I / O速度。这是关于你的硬盘的读写速度。
在4秒内加载100张高质量图像似乎很正常。
答案 1 :(得分:1)
两个想法:
如果大部分延迟确实来自IO,请压缩文件。根据其内容,即使简单的ZIP压缩也可以减小其大小,从而减少读取的字节数。工作将是在内存中解压缩它们。我不知道这是否适用于你的案件
懒惰加载它们。您是否需要一直加载所有100张图片?也许您可以先加载第一个,或者最重要的一个,让软件在完成后台加载剩余图像时执行其他操作。
答案 2 :(得分:0)
如何加载图像文件?请分享一段代码。我的猜测是你不是一次读取整个文件,而是像EOF一样逐字节地读取...优化文件加载的一种方法是将整个文件加载到预分配的内存缓冲区。