Бесполезное невероятное

Jan 09, 2015 13:32

Я потратил несколько дней на странное - писал валидацию UTF-8 в С++, с бенчмарком и тестами (линк).

В общем условия задачи такие - есть std::string с какими-то данными, которые прикидываются UTF-8. Нужно данные скопировать в новый std::string. Невалидные куски надо закодировать определенным образом, валидные - скопировать как есть.

Я написалRead more... )

Leave a comment

Comments 5

sleepy_drago January 10 2015, 08:57:10 UTC
если вообще в задаче есть смысл мерять скорость то надо дизайнить fast path. То есть если распределение ошибок реалистично никакое, то на быстром пути например мы точно знаем сколько надо выделить памяти сразу и можем убрать различия между аллокаторами в ноль.

Reply

mejedi January 10 2015, 10:36:30 UTC
Любопытно знать разрыв между худшим и лучшем случаем.

Я сейчас работаю в проекте web application firewall - некоторая шняга, типа реверс-прокси, которая анализирует запросы на аномалии и призвана защищать дырявое веб-приложения от хакеров.

То есть данные на вход могут быть специально творчески подготовленны.

Reply

sleepy_drago January 10 2015, 11:55:39 UTC
если есть "секьрити риск" куски, то такие части тем более надо отделять для последующего аудита.

повторюсь - распределение входных данных это и есть bias для fast path. универсальный код его никогда не догонит при равных сложностях алго

Reply

mejedi January 10 2015, 12:21:44 UTC
Извини, я наверное тупой и не понимаю очевидных вещей. У меня в бенчмарке используются 7 разных семплов (все случайно генеренные, но распределение вероятности разное и призвано моделировать случаи из жизни).

Этого не достаточно?

Reply


Leave a comment

Up