define: DUK_USE_STRTAB_CHAIN introduced: 1.1.0 removed: 2.1.0 related: - DUK_USE_STRTAB_CHAIN_SIZE default: false tags: - lowmemory description: > Replace the default (open addressing, probing) string table structure with one based on separate chaining. There is a fixed-size top level hash table (whose size is defined using DUK_USE_STRTAB_CHAIN_SIZE), with each entry in the hash table being: (a) NULL, (b) a duk_hstring pointer, or (c) a pointer to an array of duk_hstring pointers. The pointer arrays are gappy (the gaps are reused on new inserts) and are never shrunk at the moment. This option is intended for low memory environments to make Duktape's memory behavior match a typical pool-based allocator better as follows: The top level fixed structure never changes size, so there is no hash table resize, and thus no need for resize temporaries. The default string table algorithm needs resizing from time to time and doesn't resize in place, so you effectively need twice the string table size temporarily during a resize. The pointer arrays vary in size, but their size (typically 8 to 64 bytes, depending on the load factor) matches that of many other allocations which works well with a pooled allocator.