Header-only AVX2 FIX parser. C++20.
#include <fix/FixParser.hpp>
std::array<fix::FieldView, 128> fields;
auto r = fix::Parser{}.parse(msg, fields);
if (r.ok) {
for (size_t i = 0; i < r.fieldCount; ++i)
std::cout << fields[i].tag << " = " << fields[i].value << "\n";
}Around 17M msg/s on small messages, 13M on large. Run bench/benchmark.cpp on your computer.
Uses AVX2 intrinsics to scan 32 bytes per instruction, so you need a CPU that supports it (anything Intel Haswell / AMD Excavator or newer).
MIT.