Hello
I am using exiftool to transfer all metadata from a JPG to a PNG image. In my test case, both images are 45 Mpixels ( JPEG=14 MB and PNG= 36 MB).
I run exiftools with :
exiftool -TagsFromFile a.jpg "-all:all>all:all" a.png
I ran this command on 4 servers and got the following timings:
Machine A : 0.5 sec
Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz
CentOS Linux release 7.9.2009 (Core)
16 GB ram
Machine B : 3 sec
Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
Rocky Linux release 8.9 (Green Obsidian)
128 GB ram
Machine C : 13 sec
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz (AWS C5.xlarge)
CentOS Linux release 7.9.2009 (Core)
8 GB RAM
Machine D : 6 sec
Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
CentOS Linux release 7.9.2009 (Core)
32 GB RAM
The timing difference between the machine is huge. Is this a known issue ? Is there a problem with the Xeon CPU when used with exiftool ?
I thought that exiftool was not re-coding the images array and only modifying the header/metadata.
Is there a way to speed up the process ?
Thank you!
Gilbert
Hi Gilbert,
ExifTool verifies the PNG image data CRC checksums when writing, which slows things down immensely for large images. Add the -fast option (API FastScan (https://exiftool.org/ExifTool.html#FastScan)) to ignore these checksums. On my system here this shortens the processing time for a similar command from 16 seconds down to 0.53 seconds.
- Phil
Wonderful! On one of the machines, it went from 6 to 0.6 sec. In the 'worst' case, it went from 3 to 1 sec.
Thank you!