Browse Source

Use pointers and bare memory allocations. For speed.

master
Chris Smith 5 years ago
parent
commit
89ccac1647
1 changed files with 10 additions and 10 deletions
  1. 10
    10
      day09.nim

+ 10
- 10
day09.nim View File

@@ -1,25 +1,25 @@
1 1
 import strscans
2 2
 
3 3
 type
4
-    Marble = ref object
5
-        next, prev: Marble
6
-        value: int
4
+    Marble = object
5
+        next, prev: ptr Marble
6
+        value: int32
7 7
 
8
-func insertAfter(node: Marble, value: int) {.inline.} =
9
-    var newNode = new(Marble)
10
-    newNode.value = value
8
+proc insertAfter(node: ptr Marble, value: int) {.inline.} =
9
+    var newNode = cast[ptr Marble](alloc0(sizeof(Marble)))
10
+    newNode.value = cast[int32](value)
11 11
     newNode.next = node.next
12 12
     newNode.prev = node
13 13
     newNode.next.prev = newNode
14 14
     newNode.prev.next = newNode
15 15
 
16
-func remove(node: Marble) {.inline.} =
16
+proc remove(node: ptr Marble) {.inline.} =
17 17
     node.prev.next = node.next
18 18
     node.next.prev = node.prev
19 19
 
20
-func newSingleNode(value: int): Marble =
21
-    result = new(Marble)
22
-    result.value = value
20
+proc newSingleNode(value: int): ptr Marble =
21
+    result = cast[ptr Marble](alloc0(sizeof(Marble)))
22
+    result.value = cast[int32](value)
23 23
     result.next = result
24 24
     result.prev = result
25 25