Speed of work of exiftool

Started by lorents, April 16, 2012, 09:03:02 AM

Previous topic - Next topic

lorents

good afternoon!
Prompt, how it is possible to increase speed of work of exiftool?
Now it works extremely slowly if to compare it to jhead.
exiftool I use only for removal of metadata

Phil Harvey

Yes, ExifTool is slower than jhead.

Most of the overhead of ExifTool is from loading/compiling the program at startup.  To avoid this overhead it is best to process many files at the same time.  Alternatively, the -stay_open feature may be used.

See "Improving Performance" in the ExifTool home page for more information.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

lorents

Whether could give you to me advice

for /f "delims=" %%i in ('dir /b /s /a-d Dir1\*.jpg') do (
exiftool -exif:all= -iptc:all= -xmp:all= -icc_profile:all= -photoshop:all= -comment= -overwrite_original "%%~fi"
)


How to me in given cases to increase speed of work of exiftool?
And how it is possible to organize a multithreading?

Phil Harvey

Don't call exiftool for each file.  Instead, pass all file names to exiftool in a single command.  Or better yet, use -ext jpg and pass the directory name to exiftool.

This will improve your speed substantially.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

lorents

I have a problem that the image of JPEG passes some stages, and here therefore I can't transfer all of JPEG at once. I do not know what to do.

Phil Harvey

The -execute option is designed for this.  With this option you can execute multiple processing stages in a single command.

Also, look at the -@ option to store the arguments in a separate file.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

lorents


LKB

Phil,
I am currently trying to write a description to a large number of files. Each file will have different description, as I'm trying to maintain it as a sort of rough "diary". I got slow netbook so its easier for me to put descriptions separately and then process all the files in their own time. From what I can see -@ would be the best way here to convert this command line into -@ driven text file?

currently for each file I will have to write :
exiftool.exe  ex1.xmp  -Description="This is a view of great valley"

I understand that using -@ approach will make it not only easier but faster as well.
Is this any correct?
exiftool -stay_open True -@ myArg.fle
where myArg.fle:
ex1.xmp
-Description="This is a view of great valley"

From what I understand ARGFILE description is part of ExifTool man, which can be displayed if exiftool.exe is typed. Is there any more docs dealing with it?

Cheers,

Lukasz


Phil Harvey

If you just want to process a number of files in a batch, the argfile could look like this:

-description=This is a description
path/to/some.jpg
-execute
-description=another description
different/path/another.jpg
-execute
...
-description=last description
last.jpg


You don't need the -stay_open option here.  -stay_open is used only when interactively processing files to keep exiftool from terminating between invocations.

Also note that you don't quote arguments in the argfile.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).