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

Неожиданный результат при сравнении производительности вектора и обычного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вставить новый столбец в матрицу после столбца, в котором нет отрицательных http://www.cyberforum.ru/cpp-beginners/thread1243306.html
Вставить новый столбец после столбца, в котором нет ни одного отрицательного элемента. Вот, что сделала я. Но у меня программа не работает. как ее изменить? #include <iostream> #include<conio.h> using namespace std; int main() {int n,m,l; cout<<"n="; cin>>n; cout<<"m="; cin>>m;
C++ Остаток от деления, числа в виде массивов Друзья, подскажите пожалуйста идею для алгоритма. Проблема следующая, есть два числа, они оба представлены в виде массива, например, число 256 представлено как а={2,5,6} и например b={7,3,5,6}. Подскажите алгоритм, для того что бы реализовать вот такую операцию 256%7356, при условии, что это числа записаны в виде массивов, так как я писал выше. http://www.cyberforum.ru/cpp-beginners/thread1243249.html
C++ DLL компилируется, но не вызывается в приложении C#
Здравствуйте, есть DLL, компилируется без ошибок, но вызвать из C# её не получается, вот код: #define _CRT_SECURE_NO_WARNINGS #include <Windows.h> #include <io.h> #include <fcntl.h> #include <stdio.h> #include <fstream>
Найти максимальное число из 4-х переменных C++
Найти максимальное число из 4-х (возможно разных) переменных
C++ Перевод из String в long long http://www.cyberforum.ru/cpp-beginners/thread1243139.html
Мне нужна функция для перевода из String в long long.Функция atoi(const char* str) работает только с констатным масивом символов а мне нужен именно string(переменный).Сам C++ учу недавно в паскале с этом всё очень просто одна команда,а тут целая непонятная история...:wall::wall::wall::wall::wall::wall:
C++ Случайное распределение кораблей по полю в игре "морской бой" Привет всем кто читал мой предыдущий пост про векторы в морском боем, в той же фунции появилась новая проблема :) После починки функции появилась новая проблема - иногда при тестировании возникает ситуация, что из за неравномерного распределения места 4-палубный корабль не помещается, и программа погружается в бесконечный цикл поиска места. Я попытался решить эту проблему так: void... подробнее

Показать сообщение отдельно
DrOffset
7102 / 4243 / 952
Регистрация: 30.01.2014
Сообщений: 7,025
16.08.2014, 18:54
Цитата Сообщение от MAKAPOH Посмотреть сообщение
И ещё, если вместо operator[] использовать функцию at() для доступа к элементам вектора, то это никак не влияет на результат (в пределах погрешности измерения) хотя функция at() должна делать проверку на выход за границу размера вектора.
Оптимизация. Проверка уже проводится в цикле, вот он и выбросил ее из at.
Цитата Сообщение от MAKAPOH Посмотреть сообщение
Мой вопрос в том как так получается что шаблонный класс обгоняет простой массив по скорости?
Если ты посмотришь ассемблер,
Assembler
1
2
3
4
5
6
7
8
9
10
$LL3@test_vec:
    movd    xmm0, esi
    pshufd  xmm0, xmm0, 0
    paddd   xmm0, xmm1
    add esi, 4
; Line 9
    movdqu  XMMWORD PTR [edi], xmm0
    lea edi, DWORD PTR [edi+16]
    cmp esi, 40000000               ; 02625a00H
    jb  SHORT $LL3@test_vec
то увидишь, что код копирования там абсолютно одинаковый, для того и другого случая. Разница во времени может обеспечиваться погрешностью измерения, а не реальным расхождением. А в современных системах так мерить вообще гиблое дело.

А вообще, тест у тебя некорректно написан. Много очень факторов могли бы испортить результат, этого не произошло в данном случае, но не факт, что не произошло бы в другом, при аналогичном подходе.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru