LINUX.ORG.RU

История изменений

Исправление annulen, (текущая версия) :

Когда шаблон инстанцируется с разными параметрами, то для каждого набора параметров генерируется свой набор символов (т.е. каждый метод, v-таблица и т.п. имеют отдельный символ для каждого варианта параметров шаблона). Линкер про С++ ни сном, ни духом не ведает и считает, что это все разные сишные функции/переменные. В результате таблица символов может стать сильно больше, чем для нешаблонного кода, и это существенно замедляет линковку (кстати, этот эффект послужил мотивацией для создания ld.gold). Чтобы уменьшить масштаб проблемы С++ код рекомендуется собирать с -fvisiblity=hidden -fvisibility-inlines-hidden, что позволяет шаблонные символы по максимуму прятать внутри so’шек и бинарников.

Я всегда думал, что это влияет только на производительность, но не на память. Выходит, 512 метров это наверное уже слишком мало для проявления таких «квантовых эффектов» :) Мб boost тогда собирался без -fvisiblity=hidden -fvisibility-inlines-hidden (кстати в генте не стесняются калечить cflags, выставленные апстримом)

Исправление annulen, :

Когда шаблон инстанцируется с разными параметрами, то для каждого набора параметров генерируется свой набор символов (т.е. каждый метод, v-таблица и т.п. имеют отдельный символ для каждого варианта параметров шаблона). Линкер про С++ ни сном, ни духом не ведает и считает, что это все разные сишные функции/переменные. В результате таблица символов может стать сильно больше, чем для нешаблонного кода, и это существенно замедляет линковку (кстати, этот эффект послужил мотивацией для создания ld.gold). Чтобы уменьшить масштаб проблемы С++ код рекомендуется собирать с -fvisiblity=hidden -fvisibility-inlines-hidden, что позволяет шаблонные символы по максимуму прятать внутри so’шек и бинарников.

Я всегда думал, что это влияет только на производительность, но не на память. Выходит, 512 метров это наверное уже слишком мало для проявления таких «квантовых эффектов» :) Мб boost тогда собирался без -fvisiblity=hidden -fvisibility-inlines-hidden (кстати в генте не стесняются калечить cflags, выставленные апстримными проектами)

Исправление annulen, :

Когда шаблон инстанцируется с разными параметрами, то для каждого набора параметров генерируется свой набор символов (т.е. каждый метод, v-таблица и т.п. имеют отдельный символ для каждого варианта параметров шаблона). Линкер про С++ ни сном, ни духом не ведает и считает, что это все разные сишные функции/переменные. В результате таблица символов может стать сильно больше, чем для нешаблонного кода, и это существенно замедляет линковку (кстати, этот эффект послужил мотивацией для создания ld.gold). Чтобы уменьшить масштаб проблемы С++ код рекомендуется собирать с -fvisiblity=hidden -fvisibility-inlines-hidden, что позволяет шаблонные символы по максимуму прятать внутри so’шек и бинарников.

Я всегда думал, что это влияет только на производительность, но не на память. Выходит, 512 метров это наверное уже слишком мало для проявления таких «квантовых эффектов» :) Мб boost тогда собирался без -fvisiblity=hidden -fvisibility-inlines-hidden

Исправление annulen, :

Когда шаблон инстанцируется с разными параметрами, то для каждого набора параметров генерируется свой набор символов (т.е. каждый метод, v-таблица и т.п. имеют отдельный символ для каждого варианта параметров шаблона). Линкер про С++ ни сном, ни духом не ведает и считает, что это все разные сишные функции/переменные. В результате таблица символов может стать сильно больше, чем для нешаблонного кода, и это существенно замедляет линковку (кстати, этот эффект послужил мотивацией для создания ld.gold). Чтобы уменьшить масштаб проблемы С++ код рекомендуется собирать с -fvisiblity=hidden -fvisibility-inlines-hidden, что позволяет шаблонные символы по максимуму прятать внутри so’шек и бинарников.

Я всегда думал, что это влияет только на производительность, но не на память но 512 метров это наверное уже слишком мало для проявления таких «квантовых эффектов» :) Мб boost тогда собирался без -fvisiblity=hidden -fvisibility-inlines-hidden

Исходная версия annulen, :

Когда шаблон инстанцируется с разными параметрами, то для каждого набора параметров генерируется свой набор символов (т.е. каждый метод, v-таблица и т.п. имеют отдельный символ для каждого варианта параметров шаблона). Линкер про С++ ни сном, ни духом не ведает и считает, что это все разные сишные функции/переменные. В результате таблица символов может стать сильно больше, чем для нешаблонного кода, и это существенно замедляет линковку (кстати, этот эффект послужил мотивацией для создания ld.gold). Чтобы уменьшить масштаб проблемы С++ код рекомендуется собирать с -fvisiblity=hidden -fvisibility-inlines-hidden, что позволяет шаблонные символы по максимуму прятать внутри so’шек и бинарников.

Я всегда думал, что это только на производительность влияет, но 512 метров это наверное уже слишком мало для проявления таких «квантовых эффектов» :) Мб boost тогда собирался без -fvisiblity=hidden -fvisibility-inlines-hidden