android中ZXing和ZBar的解码速度

android中ZXing和ZBar的解码速度,android,performance,zxing,qr-code,zbar,Android,Performance,Zxing,Qr Code,Zbar,我一直在测试ZBar和ZXing,我看到很多帖子说“ZXing要慢”,“ZBar快多了”,但我没有看到任何测试公开。 我将代码更改为接受gallery中的图像,并将QRCode的解码重复50次,做了一些测试,ZXing比ZBar快得多,但两个库都有相同的奇怪问题,第一个结果大约是150毫秒,接下来的所有值都快得多,就像第一次解码的一半 我在计算中兴这条线的时间 Result res = qrreader.decode(bBitmap); 在兹巴,这一个 int result = scanner

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

我在计算中兴这条线的时间

Result res = qrreader.decode(bBitmap);
在兹巴,这一个

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

我假设您是在台式计算机而不是电话上运行这些测试。常规JavaSE JVM在频繁使用代码后将其编译为本机代码。所以第一次跑步可能会慢一些。还要注意的是,您没有在基准测试中度量一系列其他JVM初始化。最好让事情“预热”几次迭代,然后开始计时

我猜它必须在你第一次执行命令时初始化一堆对象,然后再重用它们。我想了想,但是为了防止每次测试都会初始化解码的对象,你检查了源代码了吗?当您执行
qrreader.decode(位图)
scanner.scanImage(条形码)时,它会执行什么操作?我猜当你调用它们时它会创建对象。是的,但是我每次都初始化对象,所以它会创建你每次说的所有对象<代码>QRCodeReader qrreader=新的QRCodeReader()然后
结果res=qrreader.decode(bBitmap)我正在使用不同的cpu在几个智能手机上运行测试,我没有在桌面上进行测试,因为我需要测试它们在移动设备上的性能。我想我测量的是正确的信息,我会让它像你说的那样“预热”,但我想记录一下开始时的缓慢阅读以及为什么会发生这种情况。这可能会产生类似的效果,因为像Dalvik这样的JVM也有自Android 2.2以来的JIT。很抱歉在这里问这个问题,但是zxing是否停止了对ios的支持/更新?是的,它已从v3.0中删除