1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
discard """
output: "MEM 0"
cmd: "nim c --gc:arc $file"
"""
type
RefNode = ref object
le, ri: RefNode
name: char
proc edge0(a, b: RefNode) =
if a.le == nil: a.le = b
else: a.ri = b
proc createNode0(name: char): RefNode =
new result
result.name = name
proc main0 =
let r = createNode0('R')
let c = createNode0('C')
c.edge0 r
type
NodeDesc = object
le, ri: Node
name: char
Node = ref NodeDesc
proc edge(a, b: Node) =
if a.le == nil: a.le = b
else: a.ri = b
proc createNode(name: char): Node =
new result
result.name = name
proc main =
let r = createNode('R')
let c = createNode('C')
c.edge r
type
NodeB = ref NodeBo
NodeBo = object
le, ri: NodeB
name: char
proc edge(a, b: NodeB) =
if a.le == nil: a.le = b
else: a.ri = b
proc createNodeB(name: char): NodeB =
new result
result.name = name
proc mainB =
let r = createNodeB('R')
let c = createNodeB('C')
c.edge r
let memB = getOccupiedMem()
main0()
main()
mainB()
echo "MEM ", getOccupiedMem() - memB
|