[eluser]OverZealous[/eluser] @Mareshal
First: those numbers aren't that far apart. Remember that everything the raw SQL does, the AR method has to do, and everything the AR method does, the DMZ method has to do.
Second: DMZ validates the data on every save. This is on purpose, and one of the key reasons to use it.
Third: DMZ looks up the ID after each insert, effectively doubling the number of queries.
I know this is a test, but you are dealing with absurdly small numbers here.
Basically, there's nothing else to say. DMZ is going to be slower, as I said, because it is a wrapper around AR which is a wrapper around SQL.
Heck, I'm more amazed that the overhead is so low, given that you are creating 1000 independent objects (actually, it's probably closer to 3000-4000 objects, with the error, db, and other classes), running 1000 validations, AND DMZ is actually running at least 2x as many queries! And this is over the straight ActiveRecord version.
Don't worry so much about optimization. The overhead used by DMZ is actually insignificant compared to the database and other PHP code in nearly every application, unless you are really trying to use it incorrectly. ;-) (Well, at least in 1.7, since you can use get_iterated to iterate over large result sets. Which is amazingly efficient.)