|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|||||||
Методы оптимизации кода01.07.2011, 07:48. Показов 9721. Ответов 52
Метки нет (Все метки)
Написал статью по оптимизации кода на С++. Ее можно почитать тут:
[ссылка удалена] А вы какие еще способы оптимизации кода знаете? (я не говорю про оптимизацию алгоритмов. Речь идет про код вообще)
1
|
|||||||
| 01.07.2011, 07:48 | |
|
Ответы с готовыми решениями:
52
Методы оптимизации памяти Курсовая. Методы оптимизации |
|
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||||||||||||||||||||||
| 01.07.2011, 21:08 | ||||||||||||||||||||||
|
микроконтроллеры
Добавлено через 2 часа 44 минуты Касательно же циклов здесь есть гораздо более важный момент: очень желательно, чтобы к моменту начала цикла было бы известно точное количество итераций (даже вычисленное в рантайме). Это даст компилятору шанс развернуть цикл и использовать векторизацию (SIMD). Например из кода
) между scanf и printf
2
|
||||||||||||||||||||||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|
| 29.12.2011, 08:56 [ТС] | |
|
Мной написаны еще несколько статей по написанию эффективного кода. Надеюсь они будут вам полезны:
http://itw66.ru/blog/c_plus_plus/571.html - Эффективный код на С++ http://itw66.ru/blog/c_plus_plus/491.html - Методы оптимизации памяти
0
|
|
|
|
||
| 29.12.2011, 09:17 | ||
1
|
||
|
85 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
|
|
| 29.12.2011, 09:28 | |
|
0
|
|
|
|
|||||
| 29.12.2011, 09:34 | |||||
Сообщение было отмечено как решение
Решение
5
|
|||||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 29.12.2011, 10:50 | |
|
Посмотрел статьи. Выглядит как предположения программиста. Не подкрепленные ничем.
Либо тут надо давать измерение времени - профиль. Либо показывать ассемблерный код. Тогда будет понятно, где выгода, а где - нет. Кроме того, возможно автор просто не умеет пользоваться оптимизатором? gcc вполне себе хорошо оптимизирует и сам проводит все ре рефакторинги, которые приводит автор. Но которые в коде гораздо менее понятны, чем исходный вариант.
0
|
|
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
||
| 29.12.2011, 13:59 [ТС] | ||
|
1. switch занимает больше места. Если нужно возвращать статические данные, то в массиве будет понятнее. 2. там могут быть разряженные значения 100, 200... (допустим статический массив на 65535 значений, который переводит индекс юникод чара в литеру в словаре символов). Тогда подобная оптимизация не сработает. 3. вы говорите про конкретную платформу и компилятор. Говорить о том, что в компиляторах под PS3, Xbox360 я бы не стал. На мобильных платформах это тоже может не сработать.
0
|
||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|||
| 29.12.2011, 14:41 | |||
0
|
|||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
||||||||||
| 29.12.2011, 15:10 [ТС] | ||||||||||
|
Те приемы которые я описал это информация к сведению. Если вы столкнетесь, с необходимостью оптимизации, то статьи подскажет вам некоторые варианты реорганизации кода, которые могут помочь. Некоторые пункты в статьях подходят как best practice (вроде инициализации переменных класса в списке инициализации, а не в теле конструктора. Добавлено через 9 минут
0
|
||||||||||
|
|
||||
| 30.12.2011, 10:55 | ||||
Сообщение было отмечено как решение
РешениеТакже я что-то не понял как Вы собираетесь в массив разреженные индексы заталкивать. Так же с нуля и по порядку. Иначе придется создавать заведомо больший массив. Как правило, компилятор сам выбирает что лучше (память или скорость) при использовании switch'a. switch занимает больше места? Вы имеете в виду по количеству кода? С этим тоже можно поспорить кстати. Все зависит от размера массива, его же тоже надо инициализировать. Что в своем примере Вы опустили. Плюс ко всему к случаю с массивом придется добавить проверку валидности индекса. Этого в Вашем примере тоже нет. Не поймите меня неправильно. Я не агитирую всех и всюду использовать switch. Просто все Ваши рекомендации в отрыве от контекста смотрятся бестолковыми. В любом случае я против ручной оптимизации, особенно не своевременной. Я за читабельность. Если какой-то метод смотрится красиво - я предпочту использовать его, а не другой может быть несколько более быстрый.
3
|
||||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
||||
| 30.12.2011, 11:15 [ТС] | ||||
|
Например: у меня есть система частиц. Я хочу использовать для параметра size каждой частицы не float а 16-ти битные целые числа с фиксированной точкой. И как тут понять, это даст результат или нет? И читабельность - тоже спорное понятие, человеку который с этим знаком будет без разницы, ну а новичку будет сложно разобраться. С одной стороны - вся математика будет в целых числах. С другой стороны нужно будет иногда паковать и распаковывать данные. На практике такая оптимизация дает 30% прироста производительности за счет того, что структура начинает занимать в 2 раза меньше памяти. Но принимать решение о такой оптимизации нужно в каждом конкретном случае.
0
|
||||
|
|
||||
| 30.12.2011, 11:51 | ||||
|
Все же, как правило, прирост в эффективности достигается "алгоритмическими" (асимптотическая оценка со всеми вытекающими) оптимизациями.
0
|
||||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
||||
| 30.12.2011, 14:28 [ТС] | ||||
|
Вот эта статья: research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_ GCAP_09.pdf
0
|
||||
| 30.12.2011, 14:28 | |
|
Методы Оптимизации: Метод параллельных касательных - нужен алгоритм Просмотр кода после оптимизации компилятора Объяснить нюансы оптимизации заданного фрагмента кода Мешает ли разделение кода на объявление (.h) и определение (.cpp) inline оптимизации?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|