define: DUK_USE_LITCACHE_SIZE
introduced: 2.3.0
default: 256
tags:
  - performance
  - lowmemory
description: >
  Size of the literal cache, which maps C literal memory addresses into
  pinned duk_hstring heap object addresses.  The cache is used when
  application code calls one of the duk_xxx_literal() API call variants,
  such as duk_push_literal() or duk_get_prop_literal(), to speed up the
  string intern check for the literal.  In successful cases this caching
  makes using duk_xxx_literal() almost as fast as using borrowed heap
  pointers with duk_xxx_heapptr().

  When this option is defined, duk_hstrings related to literals encountered
  in duk_xxx_literal() API calls are automatically pinned between
  mark-and-sweep rounds.  This accomplishes two things.  First, it avoids the
  need for cache invalidation for the literal cache in normal operation between
  mark-and-sweep rounds.  Second, it reduces string table traffic (i.e. freeing
  and reallocating) for literals which are likely to occur again and again.
  However, the downside is that some strings that may occur only temporarily
  will remain pinned until the next mark-and-sweep round.  If this matter, you
  can avoid it by simply using e.g. duk_xxx_string() when dealing with such
  strings.

  The literal cache size must be a power of two (2^N).
