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

создание функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос про mkdir http://www.cyberforum.ru/cpp-beginners/thread55128.html
У меня уже есть идея реализации но мне кажется есть способ проще! И так к делу вот часть кода точнее строчка WinExec("cmd /c mkdir d:\\MyFolder\\",0); мне надо так чтобы пользаватель мог задавати...
C++ Чтение из файла Есть задание: написать программу,которая считывыает числа из файла, написанные в нем через пробел. Числа кодируются и записываются в новый файл. Кодируются следующим образом: повторяющие числа,... http://www.cyberforum.ru/cpp-beginners/thread55097.html
Присваивание... C++
char f = 300; cout << f; system("PAUSE"); char f = 300; int s = f; cout << f; system("PAUSE");
Трассировка программы C++
Добрый вечер Форумчане. Не могу провести трассировку программы на С. Кто-нибудь сталкивался с трассировкой? #include <conio.h> #include <iostream.h> #include <math.h> struct point //структура...
C++ Масив объектов http://www.cyberforum.ru/cpp-beginners/thread55071.html
Вот читаю тему массив объектов. набрал небольшой код, но программ не идёт. #include <iostream> using namespace std; class MyClass { int x; public: void set_x(int i) { x = i ; } int...
C++ Динамический массив структур Реализовать программу для хранения информации о пациентах больницы. Предусмотреть следующие поля: ФИО, диагноз, Для пациентов, стационарно находящихся в больнице указать номер палаты, последнюю... подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
10.10.2009, 17:03
Цитата Сообщение от kravam Посмотреть сообщение
Видно, что второй способ пусть ненамного, но дольше. [....]
И так 3 раза, итого 6 инструкций [.....]
И так 3 раза. Всего 9 команд
К сожалению, это заблуждение. Современные процессоры имеют два конвейера выполнения и скорость исполнения кода определяется не только числом инструкций, но и возможностью их распараллеливания (спаривания, pairing) в конвейерах.
Конкретно для твоего примера, обе последовательности инструкций выполняются за 6 тактов (инструкции MOV и LEA во втором варианте кода независимы и поэтому выполняются за 1 такт в конвейерах U и V). Первый же вариант кода по Стандарту языка является, кроме того, и небезопасным, порождая Undefined behavior. И то, что наблюдаемые эффекты от этого UB совпадают с "желаемыми" - ничего не значит. Это просто чистое везение. Неизвестно, что произойдет при переносе кода на другой компилятор (например, через N лет на какой-нибудь VC++ 2020 ).

Добавлено через 18 минут
PS: вот любопытства для прогнал тестовую программу под Intel VTune Perfomance Analyzer. Компилятор MSVC++ 2005, Release, оптимизация по скорости выполнения. Результаты:
C++
1
2
3
4
5
6
7
8
9
10
{
    a ^= b ^= a ^= b;   // 819 попугаев
}
// ......
{
    int temp = a;       // 216
    a = b;              // 317 
    b = temp;           // 227
                        // итого: 760 попугаев
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru