Насколько я могу судить, ваше решение хорошо и его будет сложно улучшить.
Единственное, что я хотел бы сделать, это использовать хеширование для словаря, а не отсортированный список ключей и двоичный поиск. Вы можете использовать Delphi, TKeyпредполагая , что его производительность была разумной. Для TValueвас будет использовать пользовательские записи, реализующие вашу карту (положение и длина). Аналогично для TDictionary<string,string>. Вам нужно было бы реализовать свой собственный компаратор, который можно было бы сделать достаточно легко без выделения кучи.
Сказав все это, вы на 100% уверены, что выделение кучи столь же зло, как вы думаете, для этого приложения? Вы должны попробовать наивную реализацию, используя stringи профилируя приложение, чтобы доказать, что оно тратит значительное время в коде словаря. Еще одним преимуществом такого подхода будет то, что, если действительно проблема с выделением кучи является проблемой, вы можете использовать stringоснованную версию в качестве эталонной реализации для целей тестирования. Ваша версия, основанная на смещении указателя и длине, наверняка будет фабрикой ошибок.