GraphicsMagick 与 boost.gil 的性能比较

文章比较了GraphicsMagick和boost.gil在缩放图像方面的性能,结果显示boost.gil在某些情况下比GraphicsMagick的ScaleImage()更快。
摘要由CSDN通过智能技术生成

<2022-05-21 周六>

GraphicsMagickboost.gil的性能比较

粗略对比了一下GraphicsMagickboost.gil缩小同一张图片的性能,做到心中有数。

GraphicsMagick的代码:

// IMDisplayView.cpp:216
void CIMDisplayView::OnHalfsize()
{
  auto beg = std::chrono::steady_clock::now();
  Geometry half(50, 50);
  half.percent(true);
  ScaleImage(half);
  auto end = std::chrono::steady_clock::now();
  double val = std::chrono::duration<double, std::milli>(end - beg).count();
  char log[1024] = { 0 };
  sprintf(log, "%fms", val);
  OutputDebugStringA(log);
}

boost.gil的代码:

#pragma once

#include <chrono>
#include <iostream>

//
// Copyright 2005-2007 Adobe Systems Incorporated
//
// Distributed under the Boost Software License, Version 1.0
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
//
#include <boost/gil.hpp>
#include <boost/gil/extension/io/jpeg.hpp>
#include <boost/gil/extension/numeric/sampler.hpp>
#include <boost/gil/extension/numeric/resample.hpp>

// Example for resize_view() in the numeric extension

void t_resize()
{
  namespace bg = boost::gil;

  bg::rgb8_image_t img;
  bg::read_image("test.jpg", img, bg::jpeg_tag{});

  // test resize_view
  // Scale the image to 960x540 pixels using bilinear resampling
  auto beg = std::chrono::steady_clock::now();
  bg::rgb8_image_t tohalf(960, 540);
  bg::resize_view(bg::const_view(img), bg::view(tohalf), bg::bilinear_sampler{});
  auto end = std::chrono::steady_clock::now();
  std::cout << std::chrono::duration<double, std::milli>(end - beg).count() << "ms\n";
  bg::write_view("out-resize.jpg", bg::const_view(tohalf), bg::jpeg_tag{});
}

因为用的是IMDisplay.exe工具,所以为了公平起见,boost.gil的读图和写图的磁盘操作不计算时间,同时注意必须使用release版本,因为boost.gildebug版本比release版本慢几个数量级。

GraphicsMagick.ScaleImage()boost.gil
27.71ms17.59ms
27.42ms16.36ms
27.81ms15.18ms
26.11ms19.17ms

可以看出boost.gil的性能比GraphicsMagick最快的ScaleImage()函数还要快。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值