Почему мой пользовательский непрерывный 2D-массив не работает значительно быстрее, чем std::vector?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему мой пользовательский непрерывный 2D-массив не работает значительно быстрее, чем std::vector?

Сообщение Anonymous »

Я реализовал простую оболочку 2D-массива, используя один непрерывный std::vector, и сравнил его с std::vector.
Удивительно, но array2d немного быстрее!

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 

template
class array2d {
size_t nc{0}, nr{0};
std::vector vec{};

public:
array2d(size_t rows, size_t cols)
: nc(cols), nr(rows), vec(rows * cols) {}

template
auto&& operator[](this Self&& self, size_t i, size_t j) {
auto&& a = std::forward(self);
return a.vec[i * a.nc + j];
}

size_t rows() const { return nr; }
size_t cols() const { return nc; }
};

using Clock = std::chrono::high_resolution_clock;
using Duration = std::chrono::duration;

void benchmark_write() {
constexpr size_t ROWS = 5000;
constexpr size_t COLS = 5000;
constexpr int ITERATIONS = 10;

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79825988/why-is-my-user-defined-contiguous-2d-array-is-not-dramatically-faster-than-std[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»