Skip to content

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).

License

Notifications You must be signed in to change notification settings

Vladar4/FastStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
  • Seq: 100.00%
  • List: 19.87%
  • FastStack: 93.92%

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
  • Seq: 100.00%
  • List: 74.44%
  • FastStack: 119.21%

chart_bench_ptr

About

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).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages