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

Скорость работы функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти самую длинную последовательность цифр в строке http://www.cyberforum.ru/cpp-beginners/thread1533073.html
Помогите новичку, пожалуйста) Нарушен п.5.18 Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
C++ Строки (перестановка 1 и последней буквы каждого слова) Разработать программу, которая в заданной строке, представляющей собой некоторые предложение, меняет местами первую и последнюю букву каждого слова (слова разделены одним или несколько пробелами). ... http://www.cyberforum.ru/cpp-beginners/thread1533072.html
Дано натуральное число, Верно ли, что оно заканчивается нечетной цифрой? C++
дано натуральное число. Верно ли, что оно заканчивается нечетной цифрой
Чтение матрицы из файла C++
Есть программа ,но она неправильно работает. В чем проблема я никак не могу понять( С первой стройчкой все нормально, а вот с остальными какой-то бред( Даны два целых числа I, J и файл вещественных...
C++ Какие темы нужно знать, чтобы начать работать с DirectX http://www.cyberforum.ru/cpp-beginners/thread1533043.html
День добрый! Прочитал уже почти 3 книги "для начинающих", множество статей, немного умею работать с WinAPI, пробую сам писать простые программки, но не могу осилить всё, что связано с окнами и...
C++ Сортировка объектов вектора class Words { public: int number; // Номер в словаре для быстрого поиска string word; // Само слово vector <int> synonyms; // Номера синонимов в словаре Words() ... подробнее

Показать сообщение отдельно
bob2015
1 / 1 / 1
Регистрация: 18.09.2015
Сообщений: 26

Скорость работы функции - C++

18.09.2015, 09:11. Просмотров 393. Ответов 11
Метки (Все метки)

Требуется измерить скорость работы функции "func". При этом измерение должно производиться в течении только TIME_TEST секунд. Для такого измерения написал две функции timer_1 и timer_2. В ходе написания возникли следующие вопросы:
1) Почему если в функции timer_1 убрать две строки после которых стоит комментарий "delete", то скорость работы
всегда получается разной, то есть функция timer_1 в этом случае работает неверно? Почему такой ошибки
в функции timer_2 не наблюдается, несмотря на отсутствие похожих строк?
2) Какую из функций timer_1 или timer_2 лучше использовать для решения поставленной задачи и почему?
3) Как бы Вы написали функцию измерения скорости работы функции в течении заданного времени?

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
66
67
68
69
70
#include <time.h>
#include <stdio.h>
 
#define TIME_TEST  1.0  // Время тестирования функции в секундах
#define SIZE_BUF  1024  // Размер буфера для тестирования
 
typedef unsigned char BYTE;
typedef unsigned long ULONG;
 
// Функция что-то делающая с входными данными.
void func(BYTE *data)
{
    BYTE tmp;
 
    for(ULONG x = 0; x < SIZE_BUF; x++)
    {
        tmp = data[x];
        data[x] = data[SIZE_BUF - x - 1];
        data[SIZE_BUF - x - 1] = tmp;
    }
}
 
// Первая версия измерения скорости работы функции.
void timer_1()
{
    register ULONG count = 0;
    register time_t timer;
    BYTE data[SIZE_BUF];
    
    // Если две следующие строки убрать, то скорость считается неверно!
    timer = time(0);  // delete
    while(time(0) == timer); //delete
 
    timer = time(0) + TIME_TEST;
 
    while(time(0) < timer)
    {
        func(data);
        count++;
    }
 
    printf("speed = %.0lf kb/sec\n", count / TIME_TEST);
}
 
// Вторая версия измерения скорости работы функции.
void timer_2()
{
    register ULONG count = 0;
    register clock_t timer;
    BYTE data[SIZE_BUF];
    
    timer = clock() + CLOCKS_PER_SEC * TIME_TEST;
 
    while(clock() < timer)
    {
        func(data);
        count++;
    }
 
    printf("speed = %.0lf kb/sec\n", count / TIME_TEST);
}
 
int main()
{
 
    timer_1();
    timer_2();
    
    return 0;
}
Добавлено через 20 минут
Примечание: функция должна корректно работать на всех программно-аппаратных платформах (Windows, Linux/Unix, MAC OS, Haswel, ARM, SPARC, etc).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru