Here is my current implementation:
Code: Select all
Macro CreateStack(Name)
Global NewList Stack#Name
EndMacro
Macro FreeStack(Name)
ClearList(Stack#Name)
EndMacro
Macro Push(Name, Value)
AddElement(Stack#Name)
Stack#Name = Value
EndMacro
Macro Pop(Name)
Stack#Name
DeleteElement(Stack#Name)
EndMacro
Macro Top(Name)
Stack#Name
EndMacro
Macro CreateQueue(Name)
Global NewList Queue#Name
EndMacro
Macro FreeQueue(Name)
ClearList(Queue#Name)
EndMacro
Macro Enqueue(Name, Value)
FirstElement(Queue#Name)
InsertElement(Queue#Name)
Queue#Name = Value
LastElement(Queue#Name)
EndMacro
Macro Dequeue(Name)
Queue#Name
DeleteElement(Queue#Name, 1)
EndMacro
#ITERATIONS = 10000000
StartStack = ElapsedMilliseconds()
CreateStack(Bla())
For Index = 1 To #ITERATIONS
Push(Bla(), 1)
Next
For Index = 1 To #ITERATIONS
Pop(Bla())
Next
FreeStack(Bla())
EndStack = ElapsedMilliseconds()
StartQueue = ElapsedMilliseconds()
CreateQueue(Bla())
For Index = 1 To #ITERATIONS
Enqueue(Bla(), 1)
Next
For Index = 1 To #ITERATIONS
Dequeue(Bla())
Next
FreeQueue(Bla())
EndQueue = ElapsedMilliseconds()
MessageRequester("Result", "Stack"+Chr(9)+Str(EndStack-StartStack)+"ms"+Chr(10)+"Queue"+Chr(9)+Str(EndQueue-StartQueue)+"ms")