Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Сторонникам самообучения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание класса с конструкторами и деструктором http://www.cyberforum.ru/cpp-beginners/thread950967.html
Доброго времени суток, камрады! Прошу помощи в задании: Требуется создать класс студент, включающий surname, semester, 4 marks, конструкторы и деструктор. Так же функцию вывода информации по...
C++ Создайте имитацию входа в систему! Создайте имитацию входа в систему, которая будет запрашивать пароль и выводить приглашение только в случае совпадения введенного пароля с заранее определенным в программе, а в случае ошибки выводить... http://www.cyberforum.ru/cpp-beginners/thread950959.html
Эмуляция клика по окну C++
Доброго времени суток. Недавно задался вопросом написать автокликер. Добился клика в заданных координатах но вот тут и встала проблема. После нажатия на кнопку (Button1) происходит клик либо по...
Вывод результата C++
Прошу совета. Сперва думал, что где-то в коде ошибка, но потом создал элементарную программу, типа 2+3 и вывел ответ на экран. Естественно ответ должен быть 5, но вместо этого получаются числа от 2...
C++ Метод сортировки: простыми включениями http://www.cyberforum.ru/cpp-beginners/thread950935.html
Добрый день.Возникла проблема.Сделал сортировку для структуры по первому полю (там тип int ),не могу сделать для второго поля методом сортировки простыми включениями.Помогите пжл. #include...
C++ Передача по ссылке С помощью функции rand() округлить значение double и передать его по ссылке. подробнее

Показать сообщение отдельно
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
14.09.2013, 11:09
Цитата Сообщение от scotty Посмотреть сообщение
Посмотрите легкую книгу для прочтения М. Фленова " С++ глазами хакера",
и поймите как не надо работать
книга полна неточностей, субъективизмов
а после вот такого перла у меня вообще доверия к ней нет
ЗАКОН № 3
Следующим шагом вы должны разобрать по косточкам все операции и выяснить, где они регулярно повторяются. Начинать оптимизацию нужно именно с них.
Опять начнем рассмотрение этого закона с программирования. Допустим, что у вас есть следующий код (приведена просто логика, а не реальная программа):

1. А:=А*2;

2. Б:=1;

3. X:=X+Б;

4. Б:=Б+1;

5. Если Б<100, то перейти на шаг 3.

Любой программист скажет, что здесь слабым местом является первая строка, потому что там используется умножение. Это действительно так. Умножение всегда выполняется дольше, и если заменить его на сложение (A:=A+A) или еще лучше на сдвиг, то вы выиграете пару тактов процессорного времени. Но это только пару тактов, и для процессора это будет незаметно.

Теперь посмотрите еще раз на наш код. Больше ничего не видите? А я вижу. В этом коде используется цикл: "Пока Б<100, будет выполняться опера*ция Х:=Х+Б". Это значит, что процессору придется выполнить 100 перехо*дов с шага 5 на шаг 3. А это уже не мало. Как можно здесь что-то оптимизировать? Очень легко. В этом месте у нас выполняются две строки: 3 и 4. А что, если мы внутри цикла размножим их 2 раза:

1. Б:=1;

2. X:=X+Б;

3. Б:=Б+1;

4. X:=X+Б ;

5. Б:=Б+1;

6. Если Б<50, то перейти на шаг 3.

Здесь мы видоизменили цикл. Вторую и третью операции мы повторили два раза. Это значит, что за один проход нового цикла выполняются два раза строки 3 и 4, и только после этого произойдет переход на строку 3 для повторения операции. Такой цикл уже нужно повторить только 50 раз (потому что за один проход выполняется два действия). Это значит, что мы сэконо*мили 50 операций переходов. Неплохо? А это уже несколько сотен тактов процессорного времени.
(с)1.4 Оптимизация программ

автор начинает рассуждать о разворачивании цикла
забыв напрочь математику 5-6 класса "Сумма арифметической прогрессии"
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru