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

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

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

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

24.11.2012, 22:11. Просмотров 306. Ответов 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++
Задание: Написать программу с ручной векторизацией (выбрать любой вариант из возможных трех: ассемблерная вставка, встроенные функции ...

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

Операции в С++ - C++
Я не могу понять что делают ети операции >> << &= |= ^= Обясните пожалуйста

Поразрядные операции - C++
Написать функцию, которая в числе x устанавливает 0 в n бит, находящихся справа от позиции p, остальные биты остаются без изменения.

Битовые операции - C++
Есть число в двоичной системе, например "01000001", рядом с единицами надо заменить нули на единички! то есть должно получится например...

Битовые операции - C++
#include<iostream> #include<climits> int main() { unsigned int a = UINT_MAX; unsigned short b = USHRT_MAX; std::cout <<...

Битовые операции - C++
Доброго времени суток . Вот такая вот задачка : в числе А установить в единицу n битов влево от позиции p, заменить ими m битов числа В,...

Перегрузить операции +, +=, ==, [], () - C++
Для класса String перегрузить операции + + = == () таким образом, чтобы обеспечивалось выполнение следующих операций: ...

Битовые операции - C++
Доброго времени суток! Помогите решить задачу на тему "Битовые операции": Ввести четыре целых числа P, Q, N и M. Что больше P*(2^M)...

Битовые операции - C++
Ребят, помогите кто чем может. Дана строка unsigned char. Необходимо через каждых 4 бита вставить 1, при этом ничего не затерев. ...


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

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

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