GCC оптимизация
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
GCC оптимизация - 2011-12-03 00:13:50.140000
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Есть массив char строк, иногда они не используются, но компилятор все равно их добавляет. Не нашел флага, отвечающего за вырезку не используемых данных. Такого нет?
|
|
|
RE: GCC оптимизация - 2011-12-03 00:30:40.953333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Как этот массив объявлен? Если это глобальная переменная, которая идёт в бинарь в виде global'а, то компилятор с компоновщиком не имеют права её выкидывать: она может нужна для динамических связей – они то не знают, что не нужна. Надо объявить эту переменную с атрибутом static. Если переменная используется в нескольких модулях, то придётся извращаться. Но это по-делу: нефиг иметь глобальные переменные. Чёрт с ними со static'ами, но межмодульные глобалы – это однозначно зло. Если static-переменная не будет использоваться, возможно gcc начнёт кидать warning'и об этом, по-крайней мере о неиспользуемых static функциях он точно ругается. Ну а дальше, думаю, будет достаточно -O2. Если не будет достаточно, то по-моему, что-то было среди опций оптимизации. Попробуй. Если же ничего этого нету, то придётся возиться с компоновкой. В этом я не силён, придётся долго-долго втыкать в info ld.
|
|
|
RE: GCC оптимизация - 2011-12-03 12:21:21.536666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
#include <stdlib.h>
#include <stdio.h>
const char *LIST = "UNUSINGSHIT";
int main()
{
return 0;
}
|
|
|
RE: GCC оптимизация - 2011-12-03 12:27:52.236666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
В этом случае static помогло, но если есть большой массив и функция, которая использует его для своих целей, то добавляй не добавляй static, проблема не решается. Видимо потому что еще руками надо задать флаг, для удаления мертвого кода, который в свою очередь повлечет удаление массива строк.
|
|
|
RE: GCC оптимизация - 2011-12-03 13:50:01.220000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Функцию тоже пометь как static. Компилятор можно, я думаю, научить выкидывать неиспользуемые static функции, правда там действительно надо будет порыться в флагах оптимизации. Но если надо выкинуть лишь кусок функции, то это может и не помочь.
|
|
|
RE: GCC оптимизация - 2011-12-03 17:55:03.563333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
В мсвц точно есть флаг на оптимизацию неиспользуемых строк. Если пишешь на С++ - то вместо статиков куда правильнее использовать анонимные нэймспейсы.
|
|
|
|
|