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

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

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

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

24.11.2012, 22:11. Просмотров 319. Ответов 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], но по всей видимости это было только для описания какого-то алгоритма...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Векторизация множественно выполняющейся операции (C++):

Векторизация кода - C++
Задание: Написать программу с ручной векторизацией (выбрать любой вариант из возможных трех: ассемблерная вставка, встроенные функции ...

Как производится векторизация BITMAP? - C++
Народ поможите! Как производится векторизация BITMAP и тому подобное.

Перегрузить операции сравнения комплексных чисел и операции потокового вывода - C++
Создать класс комплексное число. Перегрузить операции сравнения комплексных чисел! =, ==,>, <,> =, <= И операции потокового ввода-вывода. ...

Заменить операции ifstream на операции fprintf - C++
Собственно как и написано в заголовке заменить операции ifstream на fprintf со всеми вытекающими(типо getline) необходимо мне. Помогите...

Битовые операции и операции смещения языка С - C++
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает верно(переводит обычные числа в 16-ти ричные),а...

Записать логические выражения, используя условные операторы, операции отношений и логические операции - C++
Записать логические выражения, используя условные операторы, операции отношений и логические операции алгоритмического языка ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2012, 22:11
Привет! Вот еще темы с ответами:

Можно ли применить nohup к уже выполняющейся команде? - Debian Linux
Привет. У меня сейчас висит терминал PuTTY, и выполняется команда, которая будет выполнятся еще дня 3-4, но мне нужно перезагрузить свой ПК...

[pthreads] Чтение блокируется долго выполняющейся записью - C Linux
Есть функция потока наподобие такой (псевдокод): p(SEM1); read(f1); v(SEM1); p(SEM2); lseek(f2, BIG_NUM); write(f2); ...

Векторизация - Программирование
Приветствую! Имеется список пикселей по периметру произвольного полигона. Как вычислить только угловые пиксели? За любую инфу по...

Векторизация - Matlab
x=1:10; y=2:11; z=10:-1:1; z(x:y) ans = 10 9


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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