Размер VisualStudio *.obj файлов (513 МБ objs и lib 534 МБ)

Попробуйте этот запрос, он работает

select name from users where id in (select userid from logs  group by userid having count(userid) = '".$inputvalue."')

DEMO LINK

6
задан Community 23 May 2017 в 12:00
поделиться

1 ответ

Объектные файлы имеют тенденцию становиться большими из-за больших объемов дублированного кода и символов, помещенных в несколько объектных файлов. Обычно это вызывается копиями подставляемых функций и инстанцированным кодом шаблона.

Получающийся исполняемый файл очень, намного меньше, чем сумма всех объектных файлов как дублированные слабые символы, и могут быть отброшены не имеющие ссылки символы.

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

Пример

Предположим, что у Вас есть это в заголовочном файле.

template< class T >
inline void F( T* t )
{
    // ... some code
}

Если Вы будете использовать F для горстки типов, то каждая единица перевода генерирует копии функции для типов, которые это использует.

Если Вы заменяете его просто объявлением:

template< class T > void F( T* t );

затем можно генерировать просто instantations, в котором Вы нуждаетесь в отдельном исходном файле:

template< class T > void F( T* t )
{
    // definition
}

template void F< int >( int* );
template void F< char >( char* );
template void F< MyType >( MyType* );

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

5
ответ дан 17 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: