I think the overhead is just in the way zmprov works i think it might start up java or something I don't know that much. It's been discussed a few times though here is a good thread
Scripting zmprov with Ruby (getting stdout/stderr)
That discusses kind of what tiger2000 is talking about, starting only one instance of zmprov and feeding it commands. Like the forum thread i psasted says though perhaps SOAP is a better way if you need to do stuff efficiently.