Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

VC++ Оптимизация

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
saskin



Зарегистрирован: 05.08.2003
Сообщения: 6

СообщениеДобавлено: Вт Авг 05 2003 18:14    Заголовок сообщения: VC++ Оптимизация Ответить с цитатой

Народ посоветуйте что быстрее, применение __declspec( naced ) или метод класса inline static. Первый не создает лишнего, но не получаеться избавитья от call, второй позволяет вставлять функцию прямо в код, хотя тоже вопрос спорный, но при этом создает временные переменные, даже при использовании __fastcall. #define не предлагать. Или если кто в курсе, посоветуйте методику тестирования.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Ср Авг 06 2003 17:03    Заголовок сообщения: Re: VC++ Оптимизация Ответить с цитатой

Все локальные переменные в функциях в VC++ временные, если не объявлены статическими. Поэтому в этом отношении инлайн не ухудшает характеристики. Инлайн удлиняет тело конечного исполняемого кода. При современном уровне плат ОЗУ инлайн, конечно, предпочтительней, особенно, если функции короткие.

Правда, кэширование в современных процессорах может свести на нет преимущества инлайна.

Но вообще, нужно искать узкие места, а не пытаться оптимизировать всю программу целиком. Потому что есть принципиальные участки, где оптимизация почти бесполезна. Например, в функции чтения с диска нет смысла оптимизировать скорость: чтение будет медленнее, чем любой, самый неоптимальный алгоритм. Соответственно там будет интересней оптимизация пространства.

В общем, вопрос этот не имеет однозначного ответа. Опиши задачу, может что умное и подскажем.
Вернуться к началу
saskin



Зарегистрирован: 05.08.2003
Сообщения: 6

СообщениеДобавлено: Сб Авг 09 2003 18:45    Заголовок сообщения: Re: VC++ Оптимизация Ответить с цитатой

Вопрос по большей части теоретический, потому как переключение процессов в винде сводит на нет все результаты тесов.
Занимаюсь перекодировкой данных в реалтайме.
Часть кода переписал на asm, но поскольку мелкософт не дает гаранти на состояние регистров при входе в __asm (и это горькая правда), то при использовании __fastcall создаеться кадр стека, ecx и edx сохраняються во временных переменных, а только потом из временных переменных передаються в __asm. Меня интересут можно ли обойти это безобразие с временными переменными. А если нет, то где теряеться больше производительности на лишнеи call, или на временных переменных при inline.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Sclis
Гость





СообщениеДобавлено: Пн Авг 11 2003 05:52    Заголовок сообщения: Re: VC++ Оптимизация Ответить с цитатой

Я, извиняюсь, знатоком большим не буду прикидываться, но есть мнение...
Раз "переключение процессов сводит на нет все результаты тестов", то зачем ты пытаешься оптимизировать асм-вставки? Твоя реал-тайм задача тоже будет на правах теста... и ей будет так же трудно Smile
на каком-то этапе критичности делают аппаратное решение, чтобы не зависить от проца...
до этого, если мощностей тебе должно хватать (ты подсчитал), то надо оптимизировать алгоритмы (саму политику) кэширования, кодирования и доступа к ресурсам, а не крохи в алгоритмах.
Например, увеличить глубину кэша. Если очередь данных растет, за каким-то порогом включать паралельный поток обработки, чтобы винда больше времени предоставляла твоей программе.
Управлять промежуточным сохранением данных, если нагрузки идут скачками... Применить где-то таблицу в памяти вместо вычислений... ну и т.д.
А лишний такт проца ситуацию не изменит (в принципе), а только отсрочит печальный финал Smile Поелику, опять таки, "винда сведет все это не нет, своими внутренними манипуляциями".
То бишь, путь у тебя правильный (оптимизацию делать надо), но проблему он не решает Smile
Вернуться к началу
saskin



Зарегистрирован: 05.08.2003
Сообщения: 6

СообщениеДобавлено: Пн Авг 11 2003 11:31    Заголовок сообщения: Re: VC++ Оптимизация Ответить с цитатой

Я наверное неправильно сформулировал вопрос. Меня интересовал способ эффективной связи С++ с asm. Вчера протестил компилер VC7, там временные переменные для inline & __asm вообще не создаються, если не использовать __fastcall то компилер сам со всем хорошо справляеться.
Так что вопрос отпал сам собой.
Всем большое спасибо!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...