Our software uses Aspose BarCode for .NET 4.0 version 23.9. We upgraded to newer version due to issues with unreadeble barcodes. One of our customers who was using our previous version with Aspose.BarCode library version 2015.08 sent us a batch of barcodes.zip (28.9 KB) with information that the barcodes are now being read, but he noticed a significant slowdown in processing.
The library interface has changed between versions. We have identified that the biggest change in performance concerns reading barcodes.
Previously each call:
array<unsigned char, 1>^ CodeBytes = br->GetCodeBytes();
took an average of 193 ms. Currently each call of CodeText in loop:
for each (auto barCodeResult in br->ReadBarCodes())
{
String^ barCodeText = barCodeResult->CodeText;
}
takes an average of 1393 ms, which is 7 times worse.
We ask to check whether such extension of reading time is only caused by more complicated barcode recognition or whether it is possible to optimize the algorithm.
Regards,
Michał Rędziński
@MRedzinski,
I did test your scenario/case using a few of your provided barcode images with the following sample code using Aspose.BarCode for .NET.
e.g.
Sample code:
var bmp1 = "g:\\test2\\barcode_01.png";
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
using (Aspose.BarCode.BarCodeRecognition.BarCodeReader reader1 = new Aspose.BarCode.BarCodeRecognition.BarCodeReader(bmp1, Aspose.BarCode.BarCodeRecognition.DecodeType.Code39Standard))
{
foreach (Aspose.BarCode.BarCodeRecognition.BarCodeResult result1 in reader1.ReadBarCodes())
{
// Read symbology type and code text
Console.WriteLine("Symbology Type: " + result1.CodeType);
Console.WriteLine("CodeText: " + result1.CodeText);
}
}
Console.WriteLine(sw.ElapsedMilliseconds.ToString());
It took around 1000 ms to recognize the barcode from each image. I think that is normal time considering the complexity of the barcodes. Could you try the above code segment and let me know how it goes?
So I tried it and got similar values to those previously measured with the debugger. Sample results:
Symbology Type: Code39Extended
CodeText: 1100001000
1324
Symbology Type: Code39Extended
CodeText: 1100002000
1330
Symbology Type: Code39Extended
CodeText: 1100003000
1313
Symbology Type: Code39Extended
CodeText: 3100004000
1673
Symbology Type: Code39Extended
CodeText: 3200004000
1463
Symbology Type: Code39Extended
CodeText: 3300004000
1546
Symbology Type: Code39Extended
CodeText: 1100005000
1398
Symbology Type: Code39Extended
CodeText: 1100006000
1717
Symbology Type: Code39Extended
CodeText: 1100007000
1379
Symbology Type: Code39Extended
CodeText: 1100008000
1285
Let me correct myself. Of course, the ReadBarCodes() function is time-consuming and this time the average was also about 1400 ms. Of course, the exact values may depend on e.g. hardware. However, if 1000 ms is the expected time, these are values of the same order of magnitude.
@MRedzinski,
Thanks for the evaluation results.
We require thorough evaluation of the performance issue you mentioned. We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.
Issue ID(s): BARCODENET-38990
You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.
I’ve got some idea. The slowdown occured after the fix for rotated barcode (Cannot read rotated DataMatrix 2D barcode).
Does the code read all four rotations?
Is there a way to specify the rotation(s) to read? (And thus limit the number of reads.)
@MRedzinski,
We have evaluated your issue and found that it is currently blocked by some internal modules/tickets. These modules/tickets involve investigating OneD algorithm performance improvements and updating the recognition engine with the new QualitySettings structure. Until both of these tickets are resolved, we are unable to address your issue. We hope to resolve the internal modules soon.