Почему обработка отсортированного массива происходит быстрее?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему обработка отсортированного массива происходит быстрее?

Сообщение Anonymous »

Итак, есть исходный вопрос, который, как я полагаю, знаком большинству разработчиков C++:
Почему обработка отсортированного массива происходит быстрее, чем обработка несортированного массива?
Ответ: предсказание ветвления
Затем я попытался воссоздать исходный вопрос и обнаружил, что он больше не актуален (или конкретный код там не актуален), поскольку компиляторы могут делать это без ветвления. как вы можете видеть в ответе, который я получил здесь:
Почему предсказание ветвления (промаха) не влияет на производительность (C++)?
Поэтому я подумал, что если в компиляторе есть специальная функция для сравнения + подсчета, чтобы воссоздать исходную проблему, я изменю код для сравнения и умножения, как вы можете видеть здесь:

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

#include 
#include 
#include 
#include 
#include 

int main()
{
// Step 1: Allocate a vector of size 1 million
std::vector vec(100'000'000);

// Step 2: Fill it with random numbers between 0 and 10
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution dis(0, 10);

for (auto& val : vec)
{
val = dis(gen);
}

// Step 3: Count numbers above 5 (and measure time)
auto start = std::chrono::high_resolution_clock::now();
int sum_above_5 = 1;
for (size_t i = 0; i < vec.size(); i++)
{
if (vec[i] < 5)
{
sum_above_5*=vec[i];
}
}

auto end = std::chrono::high_resolution_clock::now();

auto duration_before_sort = std::chrono::duration_cast(end - start).count();

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79789561/why-processing-sorted-array-is-faster[/url]
Ответить

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

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

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

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

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