1.. zephyr:code-sample:: system_hashmap
2   :name: System hashmap
3   :relevant-api: hashmap_apis
4
5   Insert, replace, and remove entries in a hashmap.
6
7Overview
8********
9
10This is a simple example that repeatedly:
11
12* inserts up to ``CONFIG_TEST_LIB_HASH_MAP_MAX_ENTRIES``
13* replaces up to the same number that were previously inserted
14* removes all previously inserted keys
15
16Building
17********
18
19This application can be built on :ref:`native_sim <native_sim>` as follows:
20
21.. zephyr-app-commands::
22   :zephyr-app: samples/basic/hash_map
23   :host-os: unix
24   :board: native_sim
25   :goals: build
26   :compact:
27
28To build for another board, change "native_sim" above to that board's name.
29
30Additionally, it is possible to use one of the other Hashmap implementations by specifying
31
32* ``CONFIG_SYS_HASH_MAP_CHOICE_SC=y`` (Separate Chaining)
33* ``CONFIG_SYS_HASH_MAP_CHOICE_OA_LP=y`` (Open Addressing / Linear Probe)
34* ``CONFIG_SYS_HASH_MAP_CHOICE_CXX=y`` (C Wrapper around the C++ ``std::unordered_map``)
35
36To stress the Hashmap implementation, adjust ``CONFIG_TEST_LIB_HASH_MAP_MAX_ENTRIES``.
37
38Running
39*******
40
41Run ``build/zephyr/zephyr.exe``
42
43Sample Output
44*************
45
46.. code-block:: console
47
48    System Hashmap sample
49
50    [00:00:11.000,000] <inf> hashmap_sample: n_insert: 118200 n_remove: 295500 n_replace: 329061 n_miss: 0 n_error: 0 max_size: 118200
51    [00:00:11.010,000] <inf> hashmap_sample: success
52