# nim: et
    ## compiled with: nim -d:release c filename
    ## nim v 0.19.9
    proc main() =
      const N = 20_000_000;
      #var data {.noinit.}: array[N,int32]
      var data {.noinit.} = newSeq[int32](N)
      # custom init
      for i in 0'i32 ..< N:
        data[i] = i
      # busy work
      for r in 1 .. 49:
        for i in 3 ..< N-1:
          data[i] = (data[i-1]+data[i+1]) div 2
      echo "result: ",data[N-2]
    when isMainModule:
      main()
    
    
    Run
    
    
    $ time ./speed-nim
    result: 19999998
    
    real        0m1.576s
    user        0m1.527s
    sys 0m0.035s
    
    $ time ./speed-cpp.exe
    result: 19999998
    
    real        0m1.591s
    user        0m1.543s
    sys 0m0.035s
    
    
    Run

Does anyone know whether `{.noInit.}` applies to `newSeq()`? Just curious?

Reply via email to