Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/graphitemaster/lua-vec

highly efficent, caching, copy-on-write lua vector math library
https://github.com/graphitemaster/lua-vec

Last synced: 3 months ago
JSON representation

highly efficent, caching, copy-on-write lua vector math library

Awesome Lists containing this project

README

        

# lua-vec

Table constructions in Lua are expensive, creating and destroying
thousands of "vector" tables frame to frame in an engine can cause
serious performance problems when Lua's GC is triggered; this is a
vector library that attempts to solve this problem by interning
construction and reusing references

It's not safe to modify a vector that may be referenced multiple times
so this library also implements reasonably efficent read-only data types
through the use of `__index` metamethods.

## performance

construction cost in the uncached case is ~2x more expensive but
the same in the cached case, the real winnings comes from not having a
destruction phase ever occur, e.g seeing 60% of GC frame to frame occur
because of one-off vector constructions go away is quite significant,
vector comparisons are ~20x faster since it's just object identity, i.e
pointer comparison in the VM.

## memory

performance is made up by interning so if you're not careful you can
run out of memory rather quickly, make smart decisions when to call
`clear_cache()` on each of the vector caches.