Class: Lazily::Prefetcher
- Inherits:
-
Object
- Object
- Lazily::Prefetcher
- Includes:
- Enumerable
- Defined in:
- lib/lazily/prefetching.rb
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#initialize(source, buffer_size) ⇒ Prefetcher
constructor
A new instance of Prefetcher.
Methods included from Enumerable
#[], #chunk, #collect, #compact, #concat, #drop, #drop_while, #flat_map, #flatten, #grep, #in_threads, #lazily, #lazy?, #prefetch, #reject, #select, #slice_before, #take, #take_while, #uniq, #zip
Methods included from Enumerable
Constructor Details
#initialize(source, buffer_size) ⇒ Prefetcher
Returns a new instance of Prefetcher.
17 18 19 20 |
# File 'lib/lazily/prefetching.rb', line 17 def initialize(source, buffer_size) @source = source.to_enum @buffer_size = buffer_size end |
Instance Method Details
#each(&block) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/lazily/prefetching.rb', line 22 def each(&block) return @source.each(&block) if @buffer_size <= 0 buffered_elements = [] i = 0 @source.each do |element| slot = i % @buffer_size if i >= @buffer_size yield buffered_elements[slot] end buffered_elements[slot] = element i += 1 end buffered_elements.size.times do slot = i % buffered_elements.size yield buffered_elements[slot] i += 1 end end |