我目前正在检查 ImageProcessorCore 并且遇到了一个问题,让我觉得我错过了一些东西:在他的网站上,开发人员显示了一些性能与我在示例程序中测量的时间完全不同的基准。我有一个 2.3 MB (3853x2569) jpg 图像,我只想从中获取宽度和高度(目前),所以我创建了这个小的 .NET 核心控制台测试应用程序:
using ImageProcessorCore;
using System;
using System.IO;
namespace ImageProcessorCoreTest
{
public class Program
{
public static void Main(string[] args)
{
using (FileStream input = File.OpenRead(@"c:\test\a.jpg"))
{
DateTime start = DateTime.Now;
Image image = new Image(input);
int w = image.Width;
int h = image.Height;
double duration = (DateTime.Now.Subtract(start)).TotalMilliseconds;
Console.WriteLine("Image size is " + w.ToString() + "x" + h.ToString() + " Pixels (" + duration.ToString() + "ms)");
Console.ReadLine();
}
}
}
}
此操作需要超过 11 秒(与上面提到的基准相比,因子 100)来读取图像并获取大小。我究竟做错了什么?
我在 Windows 10 Pro 64 上使用 1.0.0 版本。
(顺便说一句:我的开发机器是 i7-5820K,配备 16G RAM 和 Samsung Pro 950 NVMe 驱动器,所以我认为硬件很可能不会成为瓶颈。)
更新 1:重新编译 ImageProcessorCore 并创建一个发布 nuget 包,然后我在我的(发布)示例程序中使用它,不幸的是只会将持续时间缩短到 10 秒多一点。
更新 2:我刚刚将测试图像(外部)调整为 2000x1334 像素。这将时间显着降低到 849 毫秒,考虑到在开发人员的基准测试中给定的 56 毫秒用于读取、调整大小和再次写入,这仍然很奇怪。
更新 3:我现在使用可以与您共享的测试图像进行测试。新图像为 11416x6380 像素 (11.5 MB),使用上述代码需要 >17 秒。你可以在这里下载:http: //orig01.deviantart.net/92d3/f/2010/110/7/2/pla_sf_3_by_recon071.jpg
更新 4:当我使用来自 MyGet 存储库的包时,最新测试图像的时间(请参阅更新 3)下降到 2.4 秒。