|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|||||||
Методы оптимизации кода01.07.2011, 07:48. Показов 9769. Ответов 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 оптимизации?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
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
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|