dragon66 / pixymeta

Java image metadata manipulation tool
Eclipse Public License 1.0
10 stars 11 forks source link

Performance on reading metadata #13

Open lanthale opened 6 months ago

lanthale commented 6 months ago

I made some comparison for the speed of reading metadata and it seems that pixymeta is the slowest libraray. Here are the figures: JPEG iCafe read all metadata: 749 ms JPGE drewnoakes read: 257 ms JPEG libraw: 50ms

It seems that pixmeta/iCafe is reading the whole image into memory and not only the metadata. If I do the same with libraw than I am alos at 500ms. Is there an option for preventing reading the whole image data into the memory ?

Libraw is a native lib but what wonders me that drewnakes is only taking 3rd of the time to read the data. For writing metadata it is not so important. Are there any improvements planned ?

dragon66 commented 6 months ago

I assume you are talking about the JPG format only. I remember the reason behind reading all data for metadata extraction was there seems to be no set in stone rule some of the metadata should be present before the actual data stream. Another reason could be some specific information we treat them as metadata and due to different flavours of the JPG image, it make sense to grab the whole image first.

Yes, those are edge cases but this metadata lib is coming from the icafe lib which was intended for a bigger picture.

If we ditch any edge cases, we should be able to make changes and speed up performance.

I may give it a look along with the other request logged a while ago and in the end publish new snapshot but don't quote me on that.

lanthale commented 6 months ago

Thanks for that !