Больше не означает, что медленнее. Вопреки некоторым другим ответам, нет никакой внутренней разницы между библиотеками, полностью сохраненными в заголовках, и библиотеками, хранящимися в объектных файлах.
Библиотеки только для заголовков могут имеют косвенное преимущество. Большинство библиотек на основе шаблонов должны быть только для заголовков (или большая часть кода в любом случае оказывается в заголовках), а шаблоны предоставляют много возможностей для оптимизации. Взятие кода из типичной библиотеки объектных файлов и перемещение его в заголовки не , однако, обычно дает много хороших эффектов (и может привести к раздуванию кода).
Реальный ответ для конкретной библиотеки обычно зависит от ее общей структуры. Легко думать о «Повышении» как о чем-то огромном. На самом деле это огромная коллекция библиотек, большинство из которых по отдельности довольно маленькие. Вы не можете сказать много (многозначительно) о Boost в целом, потому что отдельные библиотеки написаны разными людьми, с разными техниками, целями и т. Д. Некоторые из них (например, Format, Assign) действительно медленнее, чем что-либо еще. Вы, скорее всего, будете делать это самостоятельно. Другие (например, пул) предоставляют вещи, которые вы можете сделать сами, но, вероятно, не сделаете, чтобы получить хотя бы небольшие улучшения скорости Некоторые (например, uBlas) используют сверхмощную магию шаблонов, чтобы работать быстрее, чем кто-либо, но лишь небольшой процент из нас может надеяться достичь самостоятельно.
Конечно, существует довольно много библиотек, которые на самом деле являются большими библиотеками. Во многих случаях они действительно медленнее, чем то, что вы написали бы сами. В частности, многие (большинство?) Из них пытаются быть гораздо более общими, чем почти все, что вы могли бы написать сами. Хотя это не обязательно ведет к замедлению работы кода, в этом направлении определенно наблюдается сильная тенденция . Как и во многих других кодах, когда вы разрабатываете библиотеки на коммерческой основе, клиенты, как правило, гораздо больше интересуются функциями, чем такими, как размер скорости.
Некоторые библиотеки также отводят много места, кода (и часто, по крайней мере, биты времени) для решения проблем, о которых вы, возможно, совершенно не заботитесь. Например, несколько лет назад я использовал библиотеку обработки изображений. Его поддержка более 200 форматов изображений звучала действительно впечатляюще (и в некотором смысле так и было), но я уверен, что никогда не использовал его для работы с более чем дюжиной форматов (и я, вероятно, мог бы получить, поддерживая только половину много). OTOH, даже при том, что это было все еще довольно быстро. Поддержка меньшего количества рынков могла бы ограничить их рынок до такой степени, что код на самом деле был бы медленнее (например, он обрабатывал JPEG быстрее, чем IJG).