ImageProcessorCore:打开图像需要> 11秒,我缺少什么?

时间:2016-10-01 10:52:07

标签: c# asp.net-core .net-core imageprocessor

我正在检查ImageProcessorCore,我遇到了一个问题,让我觉得我错过了一些东西:在他的website开发人员显示了一些基准测试,其性能与我测量的时间完全不同在我的示例程序中。我有一个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版。

(顺便说一句:我的开发机器是带有16G内存的i7-5820K和三星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秒。

1 个答案:

答案 0 :(得分:2)

使用官方版本可以获得正确的性能,但是使用自己的版本并不意味着构建参数出现问题。和你一样,我克隆了ImageProcessorCore并建立了自己的包。不出所料,我的表现也和你一样糟糕!对于你的12.1 MB test.jpg 需要大约23秒(官方版本需要~3秒。)

问题实际上是使用build命令。默认的.NET Core包命令(dotnet pack)以Debug配置构建包。并且Debug构建具有较差的性能,因为它执行精细的符号存储和其他辅助操作。

我使用以下命令在Release配置中构建了包:

dotnet pack --configuration Release

这次表演与官方版本完全相同( test.jpg 的约3秒!)