One other Nim-level thing I can say is that things work as expected for 
`seq[int]` of the same memory scale (100MB). I.e., 
    
    
    proc main() =
      var s: seq[int]
      for i in 0..12_500_000: s.add 1
      echo len(s)
    main()
    
    
    Run

produces a memory report (using /usr/bin/time on Linux) like: 
    
    
    187MB seq2-arc
    250MB seq2-default
    250MB seq2-msweep
    265MB seq2-boehm
    300MB seq2-none
    
    
    Run

So, this problem is **_only_** for Nim `string`. Indeed, if one changes 
`string` to `seq[char]` in the original example, usage goes down to 139MB, 
roughly what one would expect for a 3/2 growth policy.

Reply via email to