Instead of rendering out everything in an svg-file,
the render script now takes in a regular expression that is uses to
search all the object-IDs inside each of the svg-files for a match
and only renders those. To make the search go faster all object-IDs
are stored in files named ".<svg-file-name>.cache" after every full
render of an svg-file or if none exist.
The stream of inkscape commands have been divided across multiple
instances of inkscape, one per core. This speeds up rendering by
using more cpu cores, even for single svg rendering. To do this a
simple java program was written which starts N instances of
whatever arguments was passed to it and then reads one line at the
time from standard input, the lines are then divided into N
seperate streams which are then piped to the the difference instances
of whatever program was passed as argument to SplitJob.
The script no longer creates a new inkscape process for every
png export. Instead a single inkscape process is created for each
svg-file and export commands are simply fed to it. This allows for
using multiple CPU-cores and avoids the cost of constantly starting
up inkscape.
The script no longer renders out the entire icon set each time it's
run, instead it updates only icons which have been changed since
the last time the script finished running. This also means if the
script is interrupted while rendering, any svg-files what was
finished will not render out again saving time.