in reply to handler performance question

Can you pipe it in sorted? Then you could hash your data until you get a new make; then write it out and start a new hash.

And are you locked in to that directory structure? Or could you create a Honda.Civic file instead of ../Honda/Civic?

And maybe you can do some of that in parallel: Read in a make; write it to file in a child process; and read in the next make.

In the end, it depends on where your performance is lagging.