# 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?