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

Необходимо ускорить выполнение - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Температура процессора и мат.платы http://www.cyberforum.ru/cpp/thread653705.html
Коллеги нужна очень срочна ваша помощь. Надо написать на С++ программу. Чтобы она определяла температуру как процессора так мат.платы.
C++ Нужно написать программу в Visual c++)) Нужно написать программу в Visual c++)) http://www.cyberforum.ru/cpp/thread653491.html
Создание класса на с++ C++
Ребят срочно помогите решить задачку плиз... Создайте класс Rectangle (прямоугольник). Класс имеет атрибуты length (длина) и width (ширина), каждый из которых по умолчанию равен 1. Он имеет функции-элементы, которые вычисляют пе-риметр (perimeter) и площадь (area) прямоугольника. Имеются функции записи и чтения как для length, так и для width. Функции записи должны проверять, что length и...
C++ Прошу реализовать программу из предложенных языков программирования: Си, С++, С#, Java, Паскаль, Делфи
Выполнить программу на любом из предложенных языков программирования: Си, С++, С#, Java, Паскаль, Делфи. 1) В двумерном массиве случайных чисел (М строк. N столбцов) определить номера столбцов, среднее арифметическое элементов которых меньше среднего арифметического элементов во всём массиве. 2) Описать структуру с именем ORDER, содержащую следующие поля: - Расчётный счёт плательщика; -...
C++ Матрицы http://www.cyberforum.ru/cpp/thread650454.html
Заполнить двумерный массив следующим образом: (см.карт.)
C++ Можно ли реализовать КПС на С+? Можно ли реализовать КПС (Компьютерную поисковую систему) на подобии вот такой - КПС на С+? Каким способом? подробнее

Показать сообщение отдельно
mirror2u
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 20
18.09.2012, 21:36     Необходимо ускорить выполнение
Цитата Сообщение от yekka Посмотреть сообщение
mirror2u, как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <ctime>
#include <iostream>
#include <algorithm>
 
const int Size = 500000;
int array1[Size];
int array2[Size];
 
int main() {
    srand(time(NULL));
    int cache[Size];
    int * top = cache;
    for(int i = 0; i < Size; ++i) {
        array1[i] = array2[i] = rand() % 8 - 4;
    }
 
    clock_t time1 = clock();
    for (int i = 0; i < Size; ++i) {
        bool flag = false;
        for (int j = i; j < Size; ++j) {
            if (array1[j] > array1[i]) {
                array1[i] = array1[j];
                flag = true;
                break;
            }
        }
        if (!flag) {
            array1[i] = 0;
        }
    }
    time1 = clock() - time1;
 
    clock_t time2 = clock();
    for (int i = Size - 1; i >= 0; --i) {
        int val = array2[i];
        int * edge = std::lower_bound(cache, top, val,
                [](int lhs, int rhs)-> bool { return lhs > rhs; });
        if (edge == cache) {
            array2[i] = 0;
        } else {
            array2[i] = *(edge - 1);
        }
        *edge = val;
        top = ++edge;
    }
    time2 = clock() - time2;
 
    bool correct = true;
    for (int i = 0; i < Size; ++i) {
        if (array1[i] != array2[i]) {
            correct = false;
            break;
        }
    }
 
    std::cout << "Время работы неопитимизированного алгоритма (сек): ";
    std::cout << ((double)time1)/CLOCKS_PER_SEC << std::endl;
    std::cout << "Время работы оптимизированного алгоритма (сек):    ";
    std::cout << ((double)time2)/CLOCKS_PER_SEC << std::endl;
    if (correct) {
        std::cout << "Оба массива совпадают" << std::endl;
    } else {
        std::cout << "Лажа" << std::endl;
    }
}
Большое спасибо yekka всё работает, ты как всегда выручаешь) Но если тебе не сложно, закомментируй пожалуйста строки, начиная с 34 и заканчивая 45. И ещё вопрос. У меня при компиляции функция clock() не выводит время выполнения: "преобразование "time_t" в "unsigned int", возможна потеря данных"? Подскажи пожалуйста в чём дело?
 
Текущее время: 11:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru