Home

Awesome

FastStack

FastStack is dynamically resizable data structure optimized for fast iteration over the large arrays of similar elements avoiding memory fragmentation (e.g., update and rendering cycles of a game scene).

Tools

bench_int - Benchmark with int elements (low memory fragmentation case)

bench_ptr - Benchmark with ptr elements (high memory fragmentation case)

(using nimbench)

test - Unit testing suite (using unittest)

Benchmark (int)

type
  Elem = ref object of RootObj
    data: int

Comparing to seq and DoublyLinkedList on i5-2500K @ 4000MHz:

============================================================================
GlobalBenchmark                                 relative  time/iter  iters/s
============================================================================
GlobalBenchmark                                            249.31ps    4.01G
============================================================================
bench_int.nim                                   relative  time/iter  iters/s
============================================================================
Sequence                                                   108.55us    9.21K
List                                                       545.62us    1.83K
FastStack                                                  115.65us    8.65K

chart_bench_int

Benchmark (ptr)

type
  Elem = ref object of RootObj
    data: pointer

Comparing to seq and DoublyLinkedList on i5-2500K @ 4000MHz:

============================================================================
GlobalBenchmark                                 relative  time/iter  iters/s
============================================================================
GlobalBenchmark                                            249.31ps    4.01G
============================================================================
bench_ptr.nim                                   relative  time/iter  iters/s
============================================================================
Sequence                                                     1.65ms   607.54
List                                                         2.21ms   452.28
FastStack                                                    1.38ms   724.24

chart_bench_ptr