Вышел снорт3, порт снорта2, написанного на С, порт на С++.
Вижу в коде совершенно неприемлемые для разработчика с любым стажем неловкости портирования.
Пример: во втором снорте часто используются связанные списки для хранения данных.
Для поиска в этих списках само собой приходится итерировать по списку.
В стандартной библиотеке плюсов из коробки есть варианты хранения данные в ассоциативных контейнерах. Сравнительно мгновенное время поиска и в данном случае незначительный рост трат памяти и ресурсов на хранение/модификацию хранимого плюс удобство кодера, казалось бы, должны перевесить. Просто здравый смысл в выборе типа контейнера дал бы мап, хешед мап.
Но нет. Осуществлен пословный перевод с С на С++. Более того. Выбран худший контейнер. Вместо связанного списка задействовали вектор. std::vector<>. Так и вижу этот разговор между сеньором и джуном:
Джун:
-вижу в снорте2 связанный список. модифицируется изредка. Для поиска пробегается весь список. На что меняем в снорте3 - на очередь и так же будем бегать?
Сеньор:
-совсем больной? какая очередь?
-ну а на что тогда?
-ну если совсем идей нет то попробуй вектор
-нет проблем
Комментариев нет:
Отправить комментарий