←back to thread

55 points blackmat | 1 comments | | HN request time: 0.219s | source

I'm excited to announce the first release of my library, evolved.lua!

evolved.lua is a fast and flexible ECS (Entity-Component-System) library for Lua. It is designed to be simple and easy to use, while providing all the features needed to create complex systems with blazing performance.

Enjoy!

Show context
cmovq ◴[] No.44053425[source]
> Components are stored in contiguous arrays in a SoA (Structure of Arrays) manner, which allows for fast iteration and processing

Does this actually matter in Lua? Aren’t all array elements going to be pointers to heap allocated objects anyways?

The point of SoA is your likely to be accessed values are adjacent in memory, but if you’re chasing a pointer to get that value then you’re not getting anything out of it.

replies(2): >>44053600 #>>44056559 #
1. PhilipRoman ◴[] No.44053600[source]
Lua uses tagged unions so that primitives are stored inline within a table. Some time ago I benchmarked this and the perf gains from SOA were significant. Besides, even if you had to chase pointers, SOA still means you can reduce the number of allocations.