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