Matt,

Take a look a the recent discussion on RedHanded regarding
SyncEnumerator performance issues:
http://redhanded.hobix.com/inspect/enumerateSideBySideWithSyncenumerator.html

It boils down to: Generator uses continuations, which can be dreadfully
slow.

Enumerable#zip(arg) may provide a more elegant alternative than
each_with_index, but only if arg can be coerced into an Array.

Cheers,
Ken