• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mlange-42 / arche / 7515952855

14 Jan 2024 01:00AM CUT coverage: 100.0%. Remained the same
7515952855

push

github

web-flow
Reduce archetype size by storing layouts in a growing slice (#327)

Use a growing slice to hold archetype mem layouts, instead of a fixes-size array.

Reduces archetype size from 4 kB to 88 B, plus the heap-allocated slice. The slice starts with size 16 (i.e. 16 component types) and grows in steps of 16 up to 256.

# Commits

* reduce archetype size by storing components in a growing slice
* re-arrange test functions
* document undefined behavior for IDs out of range, update changelog
* move non-zero capacity calculation to a separate function
* check component registry limit vs. int, not uint8
* move arche-serde up in the tools list in README

4871 of 4871 relevant lines covered (100.0%)

65485.4 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/ecs/config.go
1
package ecs
2

3
// Config provides configuration for an ECS [World].
4
type Config struct {
5
        // Capacity increment for archetypes and the entity index.
6
        // The default value is 128.
7
        CapacityIncrement int
8
        // Capacity increment for archetypes with a relation component.
9
        // The default value is CapacityIncrement.
10
        RelationCapacityIncrement int
11
}
12

13
// NewConfig creates a new default [World] configuration.
14
func NewConfig() Config {
124✔
15
        return Config{
124✔
16
                CapacityIncrement:         128,
124✔
17
                RelationCapacityIncrement: 0,
124✔
18
        }
124✔
19
}
124✔
20

21
// WithCapacityIncrement return a new Config with CapacityIncrement set.
22
// Use with method chaining.
23
func (c Config) WithCapacityIncrement(inc int) Config {
9✔
24
        c.CapacityIncrement = inc
9✔
25
        return c
9✔
26
}
9✔
27

28
// WithRelationCapacityIncrement return a new Config with RelationCapacityIncrement set.
29
// Use with method chaining.
30
func (c Config) WithRelationCapacityIncrement(inc int) Config {
5✔
31
        c.RelationCapacityIncrement = inc
5✔
32
        return c
5✔
33
}
5✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc