static оптимизация или нет?
От: Begemot_ Россия http://softvoile.com/
Дата: 20.12.08 14:49
Оценка:
Обьясните как static влияет на оптимизацию. Если я правильно понимаю объект конструируется только один раз и это хорошо, но он же получается все время в памяти?

Конкретно задача — есть enum, надо написать функцию которая возвращает строку связанную со значением. Например так
(код недавно тут проскакивал, я скопировал)
char const* EnumToString(ReturnType rt)
{
    static char* ReturnTypeString[] = {
        "все хорошо",
        "ошибка io с файлом",
        "сессия закрыта",
        "отсутствие соединения с удаленным модулем",
        "ошибка КС принатого пакета"
    };
    STATIC_ASSERT(ERR_CRC == sizeof(ReturnTypeString) / sizeof(&ReturnTypeString[0]) - 1);
    return ReturnTypeString[rt];
}

Если представить что программа работает долго, все время работы с компом. А вызов этой функции может быть только
1. 1 раз в начале работы — 3%
2. 1 раз в начале + еще пару раз — 1 %
3. вообще не быть — 96%

Если я правильно понимаю то в 3ем случае вообще не важно как обьявлен ReturnTypeString, а вот в первых двух что более правильно с точки зрения оптимизации static char* ReturnTypeString или просто char* ReturnTypeString ? Я правильно понимаю что если объявить как statiс он будет бестолку в памяти болтатся?

p.s. этот случай оптимизировать не пытаюсь, просто академический интерес
Блог шароварщика
Микроблог про wxWidgets
Добавил разметку — Кодт
--
Блог шароварщика ::Микроблог про wxWidgets
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.