|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|||||||
Методы оптимизации кода01.07.2011, 07:48. Показов 9166. Ответов 52
Метки нет (Все метки)
Написал статью по оптимизации кода на С++. Ее можно почитать тут:
[ссылка удалена] А вы какие еще способы оптимизации кода знаете? (я не говорю про оптимизацию алгоритмов. Речь идет про код вообще)
1
|
|||||||
| 01.07.2011, 07:48 | |
|
Ответы с готовыми решениями:
52
Методы оптимизации памяти Курсовая. Методы оптимизации |
|
11 / 11 / 2
Регистрация: 01.10.2010
Сообщений: 139
|
|
| 01.07.2011, 08:10 | |
|
Ошибка: 404
К сожалению, такой страницы не существует. Вероятно, она была удалена с сервера, либо ее здесь никогда не было.
0
|
|
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|
| 01.07.2011, 08:20 [ТС] | |
|
Прошу прощения, вот исправленная ссылка:
http://itw66.ru/blog/c_plus_plus/13.html
0
|
|
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 01.07.2011, 10:00 | |
|
Статья выглядит как СООБРАЖЕНИЯ программиста. Надо бы привести замеры времени.
0
|
|
|
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
|
|
| 01.07.2011, 10:38 | |
|
Полностью соглашусь с ValeryLaptev, примеры реальной работы в студию, как на огромных так и на не очень больших массивах и т.д. и т.п.
0
|
|
|
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
|
|||||||||||
| 01.07.2011, 10:49 | |||||||||||
0
|
|||||||||||
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|||||||
| 01.07.2011, 11:13 | |||||||
![]() Добавлено через 1 минуту Да и во втором случае то же самое.
0
|
|||||||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|||
| 01.07.2011, 11:24 [ТС] | |||
|
1: some1 = some3 * (1.0f / a) - в рантайме будет только умножение. деление будет делать компилятор 2: some1 = some3 / a - будет деление в рантайме. Оно медленнее умножения. 3: some1 = some3 * 1.0f / a - это то же самое что и предыдущее вариант 1 наиболее эффективный. А заменять на a_inv не нужно, чтобы не портить читаемость кода. Добавлено через 1 минуту
0
|
|||
|
Каратель
|
||||||
| 01.07.2011, 11:25 | ||||||
2
|
||||||
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 01.07.2011, 11:45 | ||
Добавлено через 17 минут В общем в этой статье нет главного, что нередко пишут в хороших книгах. Заниматься оптимизацией стоит только тогда, когда это действительно необходимо. Ранняя "оптимизация" нередко приводит к "пессимизации" кода. Кроме того, приведённые в статье трюки могут привести к ускорению (а могут и не привести) только для конкретного процессора и конкретного компилятора. Стоит сменить то или другое, как плюсы могут неожиданно превратиться в минусы. Ну и, как уже было замечено, без реальных цифр это всё-равно ни о чём. Хотя как заметка "что ещё можно попробовать, когда ничего не помогает", может и сгодится.
2
|
||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
||||
| 01.07.2011, 11:48 [ТС] | ||||
|
Оптимизация алгоритма - это наиболее важная оптимизация. Но иногда нужно делать такие системы, в который каждая строчка кода может быть решающей. Тогда и нужно понимать подобные принципы. Допустим идет разработка системы частиц (particle system). Каждая частица будет апдейтиться в каждом кадре. Если частиц 10000 то любая лишняя операция будет сказываться на производительности. А если добавить несколько if то можно вообще ее убить.
0
|
||||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 01.07.2011, 14:26 | |
|
FiloXSee, если бы вы привели ассемблерный код в обоих случаях, то все увидели бы, что НА САМОМ ДЕЛЕ эффективно.
А пока, повторюсь, статья выглядит просто как соображения программиста. Что ОЧЕНЬ ЧАСТО не соответствует действительности.
0
|
|
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
||
| 01.07.2011, 14:30 | ||
0
|
||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
||
| 01.07.2011, 14:53 [ТС] | ||
|
Хотя это не ускорит код. Основное время тратится не на вычисление, а на условие. Его проверка остается даже в этом случае. Более того, вариант for ( int i = 0, size = strlen( string ); i < size; ++i ) будет сравнивать две целые стековые переменные, а вариант for (int i = 0; str[i]; ++i) будет вычислять текущий указатель, разыменовывать его получая по нему данные, брать от них только 1 байт и только потом сравнивать его с нулем. Это будет дольше, чем просто сравнение.
0
|
||
|
Higher
|
||||||||||||
| 01.07.2011, 15:01 | ||||||||||||
|
Примерная реализация
В моем же коде пробегаем всего 1 раз.
0
|
||||||||||||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
||
| 01.07.2011, 15:01 | ||
|
1
|
||
|
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
|
|||
| 01.07.2011, 15:27 [ТС] | |||
|
Добавлено через 3 минуты
0
|
|||
| 01.07.2011, 15:34 | |||||||||||||||||||||
|
Просто тогда явно не хватает сравнения что лучше
0
|
|||||||||||||||||||||
| 01.07.2011, 15:34 | |
|
Помогаю со студенческими работами здесь
20
Методы Оптимизации: Метод параллельных касательных - нужен алгоритм Просмотр кода после оптимизации компилятора Объяснить нюансы оптимизации заданного фрагмента кода Мешает ли разделение кода на объявление (.h) и определение (.cpp) inline оптимизации?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|