Как встроенный программист, я бы сказал, что все сводится к проблеме и системным ограничениям. В частности, на микропроцессоре вам может не понадобиться/нужно втягивать Boost, и SQLite может все еще быть слишком тяжелым для данной проблемы. Как вы нарезываете проблемы, выглядит иначе, если вы говорите, 2 КБ ОЗУ - но это определенно крайность.
Так, например, вы, вероятно, не хотите переписывать код для красно-черного дерева самостоятельно, потому что, как вы указали, вы, скорее всего, получите очень неоптимизированный код. Но в стремлении к повторному использованию абстракция часто добавляет слои косвенности коду. Таким образом, вы можете в конечном итоге переопределить по крайней мере более простые «разрешенные» проблемы, где вы можете сделать лучше, чем встроенная библиотека для определенных случаев в нише. Недавно я написал специализированную версию связанных списков, используя пулы разделяемой памяти для распределения по спискам, например. Я сравнивал с списком STL, и он просто не сокращал его из-за добавленных слоев абстракции. Мой код хорош? Нет, наверное, нет. Но я более легко мог специализироваться на конкретных случаях использования, так что это получилось лучше.
Так что, я думаю, я хотел бы остановиться на нескольких вещах со своего поста: -Почему компании все еще спрашивают о запуске большого времени? Я видел, что даже очень хорошие инженеры делают плохой выбор в отношении структур данных, потому что они не очень тщательно рассуждали о времени выполнения O(). Квадратичная или линейная или линейная или постоянная работа - это болезненный урок, когда вы ошибаетесь. (ах, голос опыта)
-Почему компании все еще спрашивают о реализации классических структур/алгоритмов? Вероятно, вы не сможете переопределить быстрый вид, но, как было сказано, вы вполне можете в конечном итоге реализовать несколько менее сложные структуры на более регулярной основе. Честно говоря, если я собираюсь нанять вас, я хочу убедиться, что вы понимаете теорию внутри и снаружи существующих решений, поэтому, если мне нужно, чтобы вы придумали новое решение, вы можете взломать Это. И если у другого заявителя есть это, а у вас нет, я бы сказал, что у них есть преимущество.
Кроме того, вот еще один способ подумать об этом. В разработке программного обеспечения часто платформа довольно мощная , и потребитель уже владеет аппаратной платформой. В разработке встроенного программного обеспечения потребитель, вероятно, покупает аппаратную платформу - надеюсь, из вашей компании. Это означает, что программное обеспечение часто продает оборудование. Так часто он делает больше центов для использования менее мощного и дешевого оборудования для решения проблемы и занимает немного больше времени для разработки прошивки. Прошивка - это одноразовая стоимость, тогда как аппаратное обеспечение - на единицу. Таким образом, даже со стороны бизнеса есть давление на ограниченное оборудование, которое, в свою очередь, приводит к реализации специализированной структуры со стороны программного обеспечения.
Это ужасно широкий для переполнения стека, и «любые комментарии» на самом деле не то, что мы делаем здесь. Мы предоставляем конкретные ответы на четко определенные вопросы кодирования. Ваша тема больше подходит для [Programmers.SE], сестринского сайта ([информация о различии] (http://meta.exechange.com/q/82988) - свободно описывается как «вопросы клавиатуры» здесь и " доска вопросов "там). Я предлагаю вам ознакомиться с публикацией там. –
@Josh Caswell .. спасибо! Я перефразирую свой вопрос. –
Используйте любой способ сортировки, предоставляемый вашим языком. Они почти всегда лучше, чем вы сами пишете. –