среда, 20 января 2021 г.

Snort3

 Вышел снорт3, порт снорта2, написанного на С, порт на С++.

Вижу в коде совершенно неприемлемые для разработчика с любым стажем неловкости портирования.

Пример: во втором снорте часто используются связанные списки для хранения данных.

Для поиска в этих списках само собой приходится итерировать по списку.

В стандартной библиотеке плюсов из коробки есть варианты хранения данные в ассоциативных контейнерах.  Сравнительно мгновенное время поиска и в данном случае незначительный рост трат памяти и ресурсов на хранение/модификацию хранимого плюс удобство кодера, казалось бы, должны перевесить.  Просто здравый смысл в выборе типа контейнера дал бы мап, хешед мап. 

Но нет.  Осуществлен пословный перевод с С на С++. Более того.  Выбран худший контейнер. Вместо связанного списка задействовали вектор. std::vector<>. Так и вижу этот разговор между сеньором и джуном:

Джун: 

-вижу в снорте2 связанный список. модифицируется изредка. Для поиска пробегается весь список. На что меняем в снорте3 - на очередь и так же будем бегать?

Сеньор:

-совсем больной? какая очередь?

-ну а на что тогда?

-ну если совсем идей нет то попробуй вектор

-нет проблем


Комментариев нет:

Отправить комментарий