Код: Выделить всё
template
void process_f(int count, float* v) {
float* ptr = v;
for (int i = 0; i < count; i++) {
*ptr = f(*ptr);
ptr++;
}
}
void process_without_f(int count, float* v) {
float* ptr = v;
for (int i = 0; i < count; i++) {
*ptr = (*ptr) * 2.0f + 3.0f;
ptr++;
}
}
inline float mult(float v) { return v * 2.0f + 3.0f; }
int main() {
int count = 1000000000;
float* v = new float[count];
process_f(count, v);
process_without_f(count, v);
delete[] v;
}
Редактировать: это добровольно просто Не смог бы использовать STD :: Transform так же легко (или также значительно повлияет на читаемость кода). Это включает, например, дело с выровненными рядами в многомерном буфере, выполнении операций на беспорядочных битах в упакованных битах или работающих на нескольких значениях одновременно.
Мои вопросы:
Я могу каким -то коде. Скомпилируется в эквивалентную сборку? Встроенный и векторный цикл в процессе>
Подробнее здесь: https://stackoverflow.com/questions/797 ... erformance
Мобильная версия