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

Быстрое копирование массивов с условиями - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз http://www.cyberforum.ru/cpp-beginners/thread849233.html
...
C++ Пузырьковая сортировка Отсортировать положительные элементы одномерного массива методом обмена(пузырька). #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; int sort (int k,int); int main() { http://www.cyberforum.ru/cpp-beginners/thread849223.html
C++ Разбить число на цифры, каждую цифру записать в ячейку массива
Пользователь задает число N с консоли. Программа разбивает полученное число на цифры, получает реверс числа и распечатывает полученный результат на экран. В решении данного задания использовать массив, а так же следующий алгоритм действий: - разбить число на цифры, каждую цифру записать в ячейку массива; - получить реверс исходного числа, используя значения массива; - распечатать полученный...
Строки: подсчитать количество гласных букв в строке C++
Условие. есть программа которая подсчитывает кол-во гласных букв в строке, но строка забивается в саму прогу. Вопрос: что сделать, чтобы строку с которой надо считывать гласные забивалась в диалоговм окне(или как оно называется). #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) {
C++ Структура: Вывести тех студентов, кто сдал оба экзамена либо на "4" либо на "5" http://www.cyberforum.ru/cpp-beginners/thread849216.html
Условие задачи: Дана ведомость студентов: Фамилия студента, оценка_1, оценка_2. Вывести тех студентов, кто сдал оба экзамена либо на "4" либо на "5"(т.е хорошисты и отличники). Вывести их количество. #include<iostream> #include<stdio.h> #include<conio.h> int main() {
C++ коды ошибок и предупреждений Здравствуйте! Хотелось бы узнать есть ли какие нибудь базы данных с кодами ошибок и их комментариями кроме msdn? Не хочется изобретать велосипед ( к примеру, нужно вывести предупреждение о том, что не удается загрузить конфиг файл.) Формулировку подобных сообщений программисты сами выдумывают или пользуются какой-нибудь базой данных? подробнее

Показать сообщение отдельно
stima
463 / 312 / 26
Регистрация: 22.03.2011
Сообщений: 1,021
Завершенные тесты: 2
26.04.2013, 21:28
Нет не так.
1. Это пример распараллеливания:
C++
1
2
3
4
5
6
7
int *array = malloc(10 * sizeof(int));
.....
for (int i=0; i < size; i += 2)
{
    *array[i] += 1;
    *array[i+1] += 1;
}
Почему так? Грубо говоря операция сложения 3 регистра у процессора 9 регистров. Цикл записанный таким образом дает возможность использовать процессору 6 регистров вместо 3, так как он точно знает что операции не пересекаются. Подробнее читайте сами.

2. Это пример копирования по блочно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int *source = ....
int *dest = ....
....
 
for ()
{
   int counter = 0; 
   for (int i = 0; i < size; ++i)
    {
      if (source[i] == condition)
          ++counter;
    }
    memcpy(dest, src, j + counter);
Грубо говоря инкрементирование размера который нужно скопировать + копирование блоком дешевле чем поодиночное копированиие. Но это зависит от данных, нужно тестить.

3. Это пример как влючить оптимизацию
g++ -O3 main.cpp -o mytarget.exe

Можете еще попробовать O4, но врядле она будет быстрее чем О3. Разницу нагуглите.

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