I tried this for benchmarking
    
    
    import future, sequtils, times, math
    
    const
      LoopCnt = 100_000_000
    
    var
      sq: seq[float] = newSeqWith(LoopCnt, 0.0)
      t0 = epochTime()
    
    proc setupSeq() =
      for i in 0..<LoopCnt: sq[i] = i.float
    
    proc useIt() =
      t0 = epochTime()
      sq.applyIt(pow(it,2))
      echo "applyIt: ", epochTime() - t0
    
    proc useClosure() =
      t0 = epochTime()
      sq.apply(x => pow(x,2))
      echo "closure: ", epochTime() - t0
    
    proc useLoop1() =
      t0 = epochTime()
      for i in 0..<LoopCnt: sq[i] = pow(sq[i], 2)
      echo "loop1: ", epochTime() - t0
    
    proc useLoop2() =
      t0 = epochTime()
      for i in 0..<LoopCnt: sq[i] = sq[i] * sq[i]
      echo "loop2: ", epochTime() - t0
    
    proc main() =
      setupSeq()
      useIt()
      setupSeq()
      useIt()
      setupSeq()
      useClosure()
      setupSeq()
      useClosure()
      setupSeq()
      useLoop1()
      setupSeq()
      useLoop1()
      setupSeq()
      useLoop2()
      setupSeq()
      useLoop2()
      setupSeq()
    
    main()
    

Reply via email to