|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.06.2011, 08:19 | #21 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Статья по оптимизации такого плана без демонстрации ассемблерного кода, т.е. того кода, который и будет исполняться компилятором, яйца выеденного не стоит.
В общем, куча текста ни о чём. Оптимизируем непонятно что (в одном месте выигрываем такты за счет большего расхода памяти, в другом - наоборот), непонятно под какой компилятор, непонятно под какой процессор... |
08.06.2011, 11:05 | #22 |
Форумчанин
Регистрация: 24.06.2010
Сообщений: 251
|
а давайте ещё вместо int , bool использовать)) это ведь сэкономит аж 3 байта..неплохая оптимизация))
|
08.06.2011, 11:14 | #23 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Цитата:
1. Тратят время разработчика впустую, следовательно искусственно увеличивается стоимость проекта. 2. Ухудшают читабельность кода, который, возможно, будут смотреть\редактировать другие разработчики, следовательно трата времени других разработчиков впустую, снова потеря денег. 3. Противоречат правилам хорошего программирования, главным принципом которых является простота. Код усложняется, следовательно возрастает вероятность допущения ошибки (того, кто это пишет, и того, кто это потом будет редактировать).
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
|
08.06.2011, 11:14 | #24 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
08.06.2011, 11:23 | #25 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
А еще корректнее - unsigned val : 1;
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, 11:56 | #26 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Фигня какая-то. Всю эту так называемую "оптимизацию" нормальный компилятор выполнит самостоятельно.
Относительно пунта 8 - то процессору мягко говоря пофиг, он заполняет строку кеша (которая шириной 64 байта), а дальше влияние на перфоманс оказывает только выравние данных относительно начала строки, ну и порядок запроса данных. Пункт 13 - откуда такие цифры? самое страшное, что может случиться - отсутствие данных в кеше, при этом процессор тратит порядка 100 тактов на поиск по всем уровням кеша и подрузгу из памяти если необходимо. 16, 17 - чо за нах. Основная задача х86 процессора анализ кода и "предвидиние" действия. И тут надо понимать, что проц не только пытается угадать, он еще ведет статистику переходов. Так что основная рекоммендация тут - избегать создания равновероятных переходов. 21 - если кто-то действительно пишет так, то наверное стоит вообще не писать И нет ничего про SSE. А это действительно оптимизация. Но, в целом, конечно, все эти твики нужны только в каком-нибудь узко-специализированном, скорее всего, вычислительном софте. Для всех остальных задач подобная оптимизация будет пустой тратой времени. Последний раз редактировалось f.hump; 08.06.2011 в 12:05. |
08.06.2011, 13:13 | #27 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Blade, я не думаю, что замена i++ на ++i так уж сильно затуманит код. А про оптимизацию, которая делает код нечитабельным даже для себя я и не говорю, только про приятные мелочи)
Форматируйте код, будьте людьми.
|
08.06.2011, 15:15 | #28 | ||||
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Цитата:
int i; char c; int arr[ 1000 ]; arr[ i ] - это на архитектуре х86 будет намного быстрее чем arr[ с ] Это тоже память не сэкономит и работать будет долго, но иногда кэшмисы страшнее и приходится так упаковывать. Цитата:
Цитата:
if ( ) else if ( ) else if ( ) Будет вычислять все выражения. По пункту 17 - конструкция if и переход будет значительно дольше чем просто вернуть значение в массиве. Это не ломает конвеер процессора. Цитата:
http://itw66.ru/blog/c_plus_plus/481.html
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
||||
08.06.2011, 15:20 | #29 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Цитата:
насчет долго, не, не будет. там элементарные команды проца, по смене битов. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||
08.06.2011, 17:21 | #30 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Как сказали выше - если нет разницы какую форму инкремента использовать, лучше использовать префиксную. А если используется постфиксная, то на это должна быть причина. И тот кто читает код, не должен гадать, почему же в 100 случаях до этого написано ++i, а теперь вдруг i++
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Последний раз редактировалось Blade; 08.06.2011 в 17:23. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Методы оптимизации | 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 |