当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 如何加速libjpeg解压缩

来源:互联网 收集:自由互联 发布时间:2021-06-22
我们在小型嵌入式平台上使用libjpeg进行JPEG解码.解码大图像时,速度有问题.例如,大小为20 MB且尺寸为5000×3000像素的图像需要10秒钟才能加载. 我需要一些关于如何提高解码速度的技巧.在
我们在小型嵌入式平台上使用libjpeg进行JPEG解码.解码大图像时,速度有问题.例如,大小为20 MB且尺寸为5000×3000像素的图像需要10秒钟才能加载.

我需要一些关于如何提高解码速度的技巧.在具有类似性能的其他平台上,我在两秒内具有相同的图像加载.

使用更大的读缓冲区(64 kB而不是默认的4 kB),最好从14秒减少到10秒.但没有其他任何帮助.

我们不需要以全分辨率显示图像,因此我们使用scale_num和scale_denom以较小的尺寸显示它.但我希望有更多的表现.是否可以使用某种多线程等?不同的解码设置?什么,我的想法.

首先 – 描述代码.如果你无法明确地找出瓶颈,那么你只剩下猜测.

接下来,搜索libjpeg加速机会的文档.你提到了scale_num和scale_denom.解压缩器的dct_meodod怎么样?我发现DCT_FASTEST选项很好.还有其他选项需要检查:do_fancy_upsampling,do_block_smoothing,dither_mode,two_pass_quantize等.根据您的系统,libjpeg版本等,其中一些可能对您有用.

如果分析工具不可用,仍有一些事情要尝试.首先,我怀疑你的瓶颈与非CPU有关.要确认,请将未压缩的图像加载到RAM缓冲区中,然后像往常一样从那里解压缩.这是否显着改善了减压时间?如果是这样,罪魁祸首似乎是图像存储介质的读取操作.根据您的系统,从USB(或SD等)读取可能会很慢. (请注意,我假设从外部媒体读取 – 虽然硬件细节很少.)确保优化相关的总线参数(SPI时钟,配置等).

如果您正在阅读内部闪存(即NAND)等内容,还需要检查其他一些内容.你的NAND控制器是如何配置的?您是否确保控制器配置为最快的操作?检查等待状态,时间等.请注意,总线和/或内存争用也是一个问题 – 因此也要检查它们各自的配置.

最后,如果您认为您的系统实际上是CPU绑定的,那么这个stackoverflow问题可能会引起关注:
Can a high-performance jpeglib-turbo implmentation decompress/compress in <100ms?

网友评论