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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вставить новый столбец в матрицу после столбца, в котором нет отрицательных http://www.cyberforum.ru/cpp-beginners/thread1243306.html
Вставить новый столбец после столбца, в котором нет ни одного отрицательного элемента. Вот, что сделала я. Но у меня программа не работает. как ее изменить? #include <iostream>...
C++ Остаток от деления, числа в виде массивов Друзья, подскажите пожалуйста идею для алгоритма. Проблема следующая, есть два числа, они оба представлены в виде массива, например, число 256 представлено как а={2,5,6} и например b={7,3,5,6}.... 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...
Найти максимальное число из 4-х переменных C++
Найти максимальное число из 4-х (возможно разных) переменных
C++ Перевод из String в long long http://www.cyberforum.ru/cpp-beginners/thread1243139.html
Мне нужна функция для перевода из String в long long.Функция atoi(const char* str) работает только с констатным масивом символов а мне нужен именно string(переменный).Сам C++ учу недавно в паскале с...
C++ Случайное распределение кораблей по полю в игре "морской бой" Привет всем кто читал мой предыдущий пост про векторы в морском боем, в той же фунции появилась новая проблема :) После починки функции появилась новая проблема - иногда при тестировании возникает... подробнее

Показать сообщение отдельно
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
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
то увидишь, что код копирования там абсолютно одинаковый, для того и другого случая. Разница во времени может обеспечиваться погрешностью измерения, а не реальным расхождением. А в современных системах так мерить вообще гиблое дело.

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