Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
#1

Векторизация множественно выполняющейся операции - C++

24.11.2012, 22:11. Просмотров 288. Ответов 0
Метки нет (Все метки)

Задача - произвести какую либо операцию над каждым элементом массива. К примеру возьмем 2 числовых массива размерностью n каждый, заполним их и элементы второго прибавим к элементам первого, с идентичным индексом. Сделать этом можно тремя путями:
1. Последовательное сложение:
C++
1
2
3
    a[0]+=b[0];
    a[1]+=b[1];
    ...
2. Через цикл while
C++
1
2
3
4
    int i=0;
    do {
        a[i]+=b[i];
    while(++i!=n);
3. Через цикл for
C++
1
2
3
4
    int i=0;
    for (int i=0;i!=n;i++) {
        ....
    }
Лично я пользуюсь первым если элементов немного и вторым, если много. Последним не пользуюсь, ибо синтаксис противоречив и немного сбивает с толку. В циклах сразу виден недостаток - лишняя операция инкремента. При том в for еще и постфиксная. Если код не будет векторизован, они проиграют первому варианту. Но если компилятор векторизует только циклы - проиграет первый.
Вопросы:
1) Все ли варианты будут векторизованы компилятором g++?
2) Почему я должен полагаться на компилятор, есть ли какие то векторные функции для подобного?
В сети давно встречал такую запись: a[0:n]+=b[0:n], но по всей видимости это было только для описания какого-то алгоритма...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 22:11     Векторизация множественно выполняющейся операции
Посмотрите здесь:

C++ Перегрузка операции =
Поразрядные операции C++
поразрядные операции C++
поразрядные операции C++
Перегрузка операции C++
Битовые операции C++
Как производится векторизация BITMAP? C++
C++ Операции в С++
C++ Векторизация кода
C++ Побитовые операции на с++ (<< и >>)
Операции new и delete C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru