【问题标题】:Speed of decoding ZXing and ZBar in androidandroid中ZXing和ZBar的解码速度
【发布时间】:2014-05-28 14:30:57
【问题描述】:

我一直在测试 ZBar 和 ZXing,我看到很多帖子说“ZXing 慢”,“ZBar 快得多”,但我没有看到任何测试公开。 我将代码更改为接受来自画廊的图像并重复解码 QRCode 50 次,做了一些测试,ZXing 比 ZBar 快得多,但是两个库都有同样奇怪的问题,第一个结果是 150 毫秒,并且所有下一个值都快得多,比如第一次解码的一半。

我在ZXing数着这条线的时间

Result res = qrreader.decode(bBitmap);

在 ZBar 这个

int result = scanner.scanImage(barcode);

有人知道为什么它第一次解码图像的结果是 X 毫秒,而下一次要快得多吗? 这是图像处理库的一些“问题”(不是问题,优化)吗?

【问题讨论】:

  • 我猜它必须在你第一次执行命令时初始化一堆对象,然后它会重用它们
  • 我想过这个问题,但为了防止我初始化每个测试中都有解码的对象
  • 你检查过来源吗?当您执行 qrreader.decode(bitmap)scanner.scanImage(barCode); 时,它会做什么?我猜当你调用它们时它会创建对象。
  • 是的,但我每次都初始化对象,所以它会创建你每次说的所有对象。 QRCodeReader qrreader = new QRCodeReader(); 然后Result res = qrreader.decode(bBitmap);

标签: android performance zxing qr-code zbar


【解决方案1】:

我假设您是在台式计算机而不是手机上运行这些测试。常规 JavaSE JVM 在大量使用后将常用代码编译为本机代码。所以第一次运行可能会更慢。另请注意,您没有在基准测试中测量一堆其他 JVM 初始化。最好让事情“热身”几次迭代,然后开始计时。

【讨论】:

  • 我在几部智能手机上运行测试,使用不同的 cpu,我没有在台式机上进行测试,因为我需要测试它们在移动设备上的表现。我想我测量的是正确的信息,我会像你说的那样让它“热身”,但我想记录一开始的缓慢阅读以及为什么会发生这种情况。
  • 这可能是类似的效果,因为像 Dalvik 这样的 JVM 从 Android 2.2 开始也有 JIT。
  • 很抱歉在这里问这个问题,zxing 是否停止了对 ios 的支持/更新?
  • 是的,它已从 v3.0 中删除
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多