Task: Don't use an unordered map to store metas
We always provide all the meta after preparse, and even if we weren't storing all of those, we just return a default initialized string when the meta wasn't stored. This can be done with an std::array which costs nothing at runtime
benchmarks:
- before
---------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------
BenchSetMeta 557 ns 557 ns 1289251
BenchSetMeta 562 ns 562 ns 1289251
BenchSetMeta 563 ns 563 ns 1289251
BenchSetMeta 565 ns 565 ns 1289251
BenchSetMeta 563 ns 563 ns 1289251
BenchSetMeta 563 ns 563 ns 1289251
BenchSetMeta 564 ns 564 ns 1289251
BenchSetMeta 563 ns 563 ns 1289251
BenchSetMeta 563 ns 563 ns 1289251
BenchSetMeta 568 ns 568 ns 1289251
BenchSetMeta_mean 563 ns 563 ns 10
BenchSetMeta_median 563 ns 563 ns 10
BenchSetMeta_stddev 2.68 ns 2.69 ns 10
BenchSetMeta_cv 0.48 % 0.48 % 10
BenchSetAndReadMeta 715 ns 715 ns 957208
BenchSetAndReadMeta 733 ns 733 ns 957208
BenchSetAndReadMeta 722 ns 722 ns 957208
BenchSetAndReadMeta 688 ns 688 ns 957208
BenchSetAndReadMeta 701 ns 701 ns 957208
BenchSetAndReadMeta 698 ns 698 ns 957208
BenchSetAndReadMeta 698 ns 697 ns 957208
BenchSetAndReadMeta 678 ns 678 ns 957208
BenchSetAndReadMeta 699 ns 699 ns 957208
BenchSetAndReadMeta 683 ns 683 ns 957208
BenchSetAndReadMeta_mean 702 ns 702 ns 10
BenchSetAndReadMeta_median 698 ns 698 ns 10
BenchSetAndReadMeta_stddev 17.4 ns 17.4 ns 10
BenchSetAndReadMeta_cv 2.49 % 2.48 % 10
- after:
---------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------
BenchSetMeta 273 ns 273 ns 2571612
BenchSetMeta 273 ns 273 ns 2571612
BenchSetMeta 273 ns 273 ns 2571612
BenchSetMeta 273 ns 273 ns 2571612
BenchSetMeta 274 ns 274 ns 2571612
BenchSetMeta 272 ns 272 ns 2571612
BenchSetMeta 271 ns 271 ns 2571612
BenchSetMeta 272 ns 272 ns 2571612
BenchSetMeta 272 ns 272 ns 2571612
BenchSetMeta 271 ns 271 ns 2571612
BenchSetMeta_mean 272 ns 272 ns 10
BenchSetMeta_median 272 ns 272 ns 10
BenchSetMeta_stddev 0.973 ns 0.973 ns 10
BenchSetMeta_cv 0.36 % 0.36 % 10
BenchSetAndReadMeta 381 ns 381 ns 1823686
BenchSetAndReadMeta 382 ns 382 ns 1823686
BenchSetAndReadMeta 382 ns 382 ns 1823686
BenchSetAndReadMeta 381 ns 381 ns 1823686
BenchSetAndReadMeta 383 ns 383 ns 1823686
BenchSetAndReadMeta 386 ns 386 ns 1823686
BenchSetAndReadMeta 386 ns 386 ns 1823686
BenchSetAndReadMeta 384 ns 383 ns 1823686
BenchSetAndReadMeta 385 ns 384 ns 1823686
BenchSetAndReadMeta 385 ns 384 ns 1823686
BenchSetAndReadMeta_mean 384 ns 383 ns 10
BenchSetAndReadMeta_median 384 ns 383 ns 10
BenchSetAndReadMeta_stddev 1.99 ns 1.81 ns 10
BenchSetAndReadMeta_cv 0.52 % 0.47 % 10