|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.06.2011, 15:09 | #11 |
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Если вы пишите бизнес логику, то оптимизация алгоритмов намного важнее оптимизации кода. Но если вы пишите низкоуровневую систему, или например математическую библиотеку, то подобные знания просто необходимы.
Даже если в асме вы получаете линейную последовательность команд, то это не значит, что процессор их не будет выполнять параллельно.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
07.06.2011, 15:17 | #12 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Цитата:
В математических библиотеках основную роль играет оптимизация математических алгоритмов, а не всевозможные извращения, которые у вас описаны. Еще раз - все это компилятор может сделать сам.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
|
07.06.2011, 15:49 | #13 |
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Не все. Посмотри пример 17. Это часто встречающаяся ситуация. Да и вообще можно очень навредить производительности используя ветвления. Компилятор нечего тут не сделает. Допустим есть функция которая валидирует содержимое некой структуры и вызывается в каждом кадре. Допустим в ней умножается матрица трансформации предка на свое смещение, чтобы получить свою позицию.
А в ее начале идет проверка, которая проверяет, что раз матрица не менялась, то и вычисления не требуются: if( !needValidate ) return; Умножение вектора на матрицу - это 9 произведений и 6 сумм - 15 тактов. Операция if - минимум 40 тактов. Таким образом эта "оптимизация" увеличивает время выполнение функции в три раза. Дешевле просто вычислять все всегда, не проверяя флаг необходимости валидации. Если мы проходим по коллекции таких объектов и эта функция вызывается в каждом кадре, то эта тупая проверка может сильно снизить скорость работы кода. Понятно, что в простых примерах, которые я описывал компилятор может справится. В остальных же все будет на совести программиста.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
07.06.2011, 16:21 | #14 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
|
|
07.06.2011, 16:48 | #15 |
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Я занимаюсь разработкой игр под разные платформы (PC, PS3, XBox360, MacOsX). Там тоже очень важна оптимизация.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
07.06.2011, 21:22 | #16 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
1. Хорошо. Как вы считаете есть ли принципиальные различия в подходах по оптимизации для PC и PS3?
2. Что вы понимаете под низкоуровневыми системами? |
07.06.2011, 23:57 | #17 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Вообще-то да, p51x прав, не в том разделе тема, ну да ладно.
Статья интересная, много интересных и порой неожиданных подходов, но с некоторыми вещами очень несогласен. А про оптимизацию компилятором вопрос спорный. Единственное, что он должен делать, это обрабатывать написанный код так, чтобы он работал как написано. А что он там будет или не будет оптимизировать можно узнать, лишь прочитав код самого компилятора. Хотя в целом согласен, многие вещи он сам может сделать. Но почему бы не писать оптимизированно просто для души или на всякий случай?) Согласен с Blade, обычно правильный алгоритм будет быстрее такой оптимизации, хотя, естественно, лучше и то и другое. Был случай на олимпиаде по программированию. До конца оставалось 5-10 минут, в массиве нужно было найти 3 максимальных положительных и 2 минимальных отрицательных элемента. Все, что пришло в голову в тот момент - отсортировать. Сделал бы, например, пузырьком - пролетел бы во времени. НО я сделал вставками и работало, видимо, достаточно быстро)
Форматируйте код, будьте людьми.
|
08.06.2011, 00:09 | #18 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Granus
да никто не спорит, что алгоритм важнее такой оптимизации. но даже говорить об оптимизации на таком низком уровне, используя высокоуровневый/среднеуровневый (как с++) язык (вкупе с какой нить либой, Qt к примеру), просто смешно. а ну и пофиг, что данные в модели хранятся в QVariant, туда-сюда конвертятся, а вот тут контейнер я передаю по значению, зато 2 такта сэкономил на условиях
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
08.06.2011, 00:15 | #19 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Цитата:
И я искренне надеюсь, что автор имеет ввиду обычные типы без библиотек и прочих подобных вещей, иначе оптимизация, действительно, выглядит смешно)
Форматируйте код, будьте людьми.
|
|
08.06.2011, 07:36 | #20 | |
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Цитата:
Но сходство в том, что всегда нужно минимизировать объемы данных, чтобы кэшмисов при работе было меньше, часто паковать все в биты и работать с ними напрямую. Это я и называл низким уровнем. Конечно if почти никакого вреда не нанесет если речь идет про логику игры или бизнес логику обычных приложений. Но если вы делаете Particle System и при обновлении каждого партикла вы будете делать что то вроде: if( needChangePosition ) position += velocity * dt; То у вас все ляжет на 10000 партиклов. И различий в PC и PS3 тут не будет. Разве что PC намного мощнее. 2. Примерно это и понимаю. Когда задача написать систему эффектов, не вылезая за 1 мегабайт памяти и 1 милисекунду апдейта и рендера.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Методы оптимизации | Lazio | Фриланс | 3 | 11.12.2010 12:05 |
методы оптимизации первого порядка | Olenka555 | Помощь студентам | 0 | 21.05.2010 16:43 |
Методы оптимизации в Excel | Raikhman | Microsoft Office Excel | 2 | 10.02.2009 11:17 |
задачи оптимизации | kirasir | Microsoft Office Excel | 2 | 08.08.2007 00:40 |