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

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

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

Показать сообщение отдельно
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
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 класса "Сумма арифметической прогрессии"
 
Текущее время: 12:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru