я написать код C, который являетсяОптимизация C код без параллельного программирования
for(i=1;i<10000;i++)
x[i]=array1[h][x[i]^x[i-1]]
И
for(i=9999;i>0;i--)
x[i]=x[i-1]^array2[h][x[i]]
Примечание:
1- массив1 и массив2 являются содержащими байтами значения
2- вторая петля выполняет противоположную функцию первого контура
3- ч является значением байта и то же самое в loop1 и loop2
Мой вопрос
Второй цикл происходит быстрее, чем первый, и я понимаю это, так как в первом цикле каждое значение в x зависит от нового значения предыдущего байта, IE. Чтобы вычислить x2, вы должны вычислить x1, тогда как во втором цикле каждый байт зависит от старого значения предыдущего байта, который уже существует, IE. Для вычисления x9999 вам нужно старое значение x9998, а не новое, и поэтому не нужно ждать вычисления x9999, как это делается в C-коде и вызываемом, это параллельное программирование, которое означает, что язык C делает параллельное программирование для некоторых циклов что не является последовательным без пользователя, контролирующего и записывающего такую параллельную связь
Вопрос: Почему цикл 2. быстрее, чем 1. цикл?
Большое спасибо
Я новичок в коде C
Извините за этот вопрос, если это слишком легко
Можете ли вы показать нам результаты бенчмаркинга? Какая разница в производительности? – GWW
Вы включили оптимизацию компилятора? –
Я программирую в блоках кода, и я компилирую и запускаю его с использованием режима выпуска, но я начинаю с кода C, поэтому я не знал, что такое оптимизация компилятора очереди на –