Search code examples
timeclojurelazy-evaluationlazy-sequences

Elapsed time in lazy sequence evaluation


Given this code:

(reduce my-fun my-lazy-seq)

To measure the elapsed time of the entire operation:

(time (reduce my-fun my-lazy-seq))  ;;Elapsed time: 1000.1234 msecs

How do I measure the elapsed time of this loop at various stages before completion? For example:

Elapsed time to process next 1000 samples in my-lazy-seq: 100.1234 msecs  
Elapsed time to process next 1000 samples in my-lazy-seq: 99.1234 msecs  
Elapsed time to process next 1000 samples in my-lazy-seq: 101.1234 msecs  
...

Solution

  • (doseq [thousand (partition 1000 my-lazy-seq)]
      (time (reduce my-fun thousand)))