#cpp #алгоритм #типы_данных #функциональное_программирование #стандарт
Задался вопросом, имеет ли смысл в настоящее время использовать собственные реализации таких типов данных как связный список/стек/очередь/словарь? Именно для выполнения реальных задач, а не в учебных целях. Казалось бы, стандарт языка С++ на данный момент предоставляет большое количество инструментов, но несмотря на это, в некоторых проектах всё ещё продолжают использовать самописные реализации тех или иных АТД. В том редком случае, когда стандартные средства уступают в производительности самописным, логично, что выбор вряд ли будет в пользу стандартных. Но в большинстве случаев нет какой-либо критичной разницы между двумя подходами. Так стоит ли игра свеч?
Ответы
Ответ 1
Реализация контейнеров и алгоритмов в STL или Boost - веселая штука. Их делают максимально унифицированными (в основном для покрытия максимального кол-ва задач) и очень тщательно проверяют на быстродействие и т.д. Их пишут не один десяток людей, а ревьювят его вообще все ). Это дает гарантию что конкретная реализация будет максимально удовлетворять потребностям большинства. Время когда люди писали свои "общие" контейнера и алгоритмы наверное прошло. Но во в задачах (пример: Вам нужен произвольный доступ, и ассоциотивность) - да надо писать свой костыль. В стандартах очень много ассемблерных вставок для оптимизации производительности, и поэтому я не думаю что компилятор родит более вменяемый код, чем тот над которым посидели оптимизаторы. ИМХО: В реальных задачах надо брать готовое, а не рожать что-то (ибо дорого) сейчас вообще большинство ничего не кодит (дешевле найти готовое и пришить), что разумеется пичалька
Комментариев нет:
Отправить комментарий