Whatever, i prefer C++ to Godot, i am more familiar and anyway backend development feels just more interesting.

Well, it seems i was wrong in using a std::map<std::string, DataItem> to store dataitems. A quick valgrind profiling proved that 90% of the server load happens within the std library manipulating string objects. Go figure.

I should have predicted that, but somehow all this new C++17 stuff lead me to believe differently.

So i am now moving to a std::vector<DataItem> approach and a numeric index instead of strings.

So now you will need to convert the dataitem name to index, store the index for future reference, and then use the index for a super fast direct access trough the std::vector.