gpt4 book ai didi

performance - 如何加快libjpeg解压速度

转载 作者:行者123 更新时间:2023-12-03 06:15:33 24 4
gpt4 key购买 nike

我们在小型嵌入式平台上使用 libjpeg 进行 JPEG 解码。当我们解码大图像时,我们会遇到速度问题。例如,大小为 20 MB、尺寸为 5000x3000 像素的图像需要 10 秒才能加载。

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

通过使用更大的读取缓冲区(64 kB 而不是默认的 4 kB),我们得到的最佳时间从 14 秒减少到 10 秒。但没有其他帮助。

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

最佳答案

首先 - 分析代码。如果您无法明确识别瓶颈,那么您只能进行猜测。

接下来,搜索文档以寻找 libjpeg 加速机会。您提到了 scale_numscale_denom。解压缩器的dct_method怎么样?我发现 DCT_FASTEST 选项很好。还有其他选项需要检查:do_fancy_upsamplingdo_block_smoothingdither_modetwo_pass_quantize等。其中一些可能对您有用,具体取决于您的系统、libjpeg 版本等。

如果分析工具不可用,仍然可以尝试一些方法。首先,我怀疑你的瓶颈与CPU无关。要进行确认,请将未压缩的图像加载到 RAM 缓冲区中,然后像以前一样从那里解压缩。这是否显着缩短了减压时间?如果是这样,罪魁祸首似乎是图像存储介质的读取操作。根据您的系统,从 USB(或 SD 等)读取数据可能会很慢。 (请注意,我假设从外部介质读取 - 尽管硬件详细信息很少。)还要确保优化相关总线参数(SPI 时钟、配置等)。

如果您正在读取内部闪存(即 NAND)之类的内容,则还需要检查其他一些内容。您的 NAND Controller 是如何配置的?您是否确保 Controller 配置为最快运行?检查等待状态、计时等。请注意,总线和/或内存争用也可能是一个问题 - 因此还要检查它们各自的配置。

最后,如果您相信您的系统实际上是 CPU 密集型的,那么您可能会对这个 stackoverflow 问题感兴趣: Can a high-performance jpeglib-turbo implmentation decompress/compress in <100ms?

关于performance - 如何加快libjpeg解压速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com