C++ API调用的速度

C++ API调用的速度,c++,imagemagick,opencl,magick++,C++,Imagemagick,Opencl,Magick++,我按照中的说明安装了imagemagick。我需要将一个图像调整为4种不同的大小,并对其进行裁剪。我写了一个C++程序,调用“代码>图像”。调整大小(“500×500!”)图像。调整大小(“550x550!”) >图像>调整大小(“600×600!”) >代码>图像。调整大小(“650x650!”) >代码>图像。在图中,100个图像在一个文件夹中(几何(200150,10,50))< /代码>。p> 当我在命令行中运行相同的案例时,如下所示: cd /home/Downloads/ImageM

我按照中的说明安装了
imagemagick
。我需要将一个图像调整为4种不同的大小,并对其进行裁剪。我写了一个C++程序,调用“代码>图像”。调整大小(“500×500!”)<代码>图像。调整大小(“550x550!”)<代码> >图像>调整大小(“600×600!”)<代码> >代码>图像。调整大小(“650x650!”)<代码> >代码>图像。在图中,100个图像在一个文件夹中(几何(200150,10,50))< /代码>。p> 当我在命令行中运行相同的案例时,如下所示:

cd /home/Downloads/ImageMagick-6.9.3-7/utilities/ && \
    exec sudo time ./convert img.jpg -write \
     mpr:scroll  -filter Lanczos -resize 500x500 -crop 200x150+10+50 -write m.jpg delete \
     mpr:scroll  -filter Lanczos -resize 600x600 -crop 200x150+10+50 -write n.jpg delete \                 
     mpr:scroll  -filter Lanczos -resize 550x550 -crop 200x150+10+50 -write o.jpg delete \ 
     mpr:scroll  -filter Lanczos -resize 650x650 -crop 200x150+10+50 p.jpg;
我得到了8124.13毫秒的输出。但当我在Magick++API中执行相同的操作时,我在369237毫秒内得到了一个输出。为什么会有这么大的差异

当我检查设备基准文件时,如下所示:

$ cat ~/.cache/ImageMagick/ImagemagickOpenCLDeviceProfile
它表明

<version>ImageMagick Device Selection v0.9</version>
<device><type></type><name>Quadro M6000</name><driver>352.79</driver><max cu>24</max cu><max clock>1114</max clock><score>0.0960</score></device>
<device><type></type><score>1.1890</score></device>
ImageMagick设备选择v0.9
Quadro M6000352.79241140.0960
1.1890

根据post in,API必须在GPU中运行,因为GPU设备的得分最低。如何解决此问题?

您能用512x512(至256x256)和640x640大小的图像重新进行基准测试吗?@huseyintugrulbuyukisik API,512x512至256x256->20169.9ms,640x640至256x256->24032.8ms。在命令行中,512x512到256x256->1520.79ms,640x640到256x256->2364.57msI意味着与369秒版本的Magick++API相对应。@Huseyintugrulbuyukick,369237ms仅用于Magick API。。对于命令行,我得到了8124ms“-resize受支持,但不支持-thumbnail或-sample。当原始和缩略图之间的大小差异较大时,-sample有助于使-thumbnail比-resize更快。测试应回答执行“正确”调整大小的速度损失是否由更快的硬件补偿。”如中所述