From: "gregolsen (Innokenty Mikhailov)" <anotheroneman@...>
Date: 2013-06-27T05:24:38+09:00
Subject: [ruby-core:55665] [ruby-trunk - Feature #6183] Enumerator::Lazy performance issue


Issue #6183 has been updated by gregolsen (Innokenty Mikhailov).

File 26_06_2013_2.diff added

@nobu thanks for pointing!
Indeed hybrid flag is already obsolete since I'm checking for proc_entry presence.
If no proc entries present - than it's effectively a hybrid case.
Fixed patch attached.

PS
I'm using this github branch - https://github.com/gregolsen/ruby/tree/enumerator_lazy_optimization
Should I still attach diffs here?
----------------------------------------
Feature #6183: Enumerator::Lazy performance issue
https://bugs.ruby-lang.org/issues/6183#change-40170

Author: gregolsen (Innokenty Mikhailov)
Status: Assigned
Priority: Low
Assignee: zzak (Zachary Scott)
Category: 
Target version: 


I benchmarked Enumerator::Lazy and that's what I got:
                 user     system      total        real
Lazy:        0.690000   0.010000   0.700000 (  0.733160)
Normal:      0.160000   0.010000   0.170000 (  0.186695)

It seems like even with 4 chain links and 3000 elements in initial array, Lazy enumerator is almost 4(!) times slower than the normal case.

Instead of performance benefit we've got 4 times performance drawback.

See test file attached.


-- 
http://bugs.ruby-lang.org/