Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подчет времени работы алгоритма С/С++

47K
13 сентября 2009 года
[NightMare]
14 / / 13.09.2009
есть вот такое
 
Код:
int i = 1;
i++;


И нужно подсчитать вот єто...
17K
13 сентября 2009 года
kilowatt
27 / / 13.01.2007
#include<time.h>
clock_t start,finish;
float time;
int i = 1;
start=clock();
i++;
finish=clock();
time=(finish-start)/CLK_TCK;
47K
13 сентября 2009 года
[NightMare]
14 / / 13.09.2009
Цитата: kilowatt
#include<time.h>
clock_t start,finish;
float time;
int i = 1;
start=clock();
i++;
finish=clock();
time=(finish-start)/CLK_TCK;



Этот метод я знаю, но увы он не работает, результат:

 
Код:
0.000000
Для продолжения нажмите любую клавишу . . .
31K
13 сентября 2009 года
dreamer.mas
69 / / 15.11.2008
Сделайте побольше число прогонов инкремента. Хотя вряд ли это даст точный результат
17K
13 сентября 2009 года
kilowatt
27 / / 13.01.2007
Хм. можно попробовать выполнить инкремент допустим 1000 раз, а потом полученное время разделить на 1000;
47K
13 сентября 2009 года
[NightMare]
14 / / 13.09.2009
Цитата: kilowatt
Хм. можно попробовать выполнить инкремент допустим 1000 раз, а потом полученное время разделить на 1000;



Код:
int t=1;
    clock_t start,finish;
    int i;
    start = clock();
    for (i = 0; i < 10000000; i++)
    {
        t++;
    }
    finish = clock();

    double time = (finish-start);//CLOCKS_PER_SEC;
    cout << time << endl;


и результат 32!
260
13 сентября 2009 года
Ramon
1.1K / / 16.08.2003
Ну посчитали вы бегемотов, что дальше то?
47K
13 сентября 2009 года
[NightMare]
14 / / 13.09.2009
Цитата: Ramon
Ну посчитали вы бегемотов, что дальше то?



Вот именно чтоничего! Нужно более лучший алгоритм чем этот!

На C# сделать можно с помощью System.Diagnostic;
StopWatch st = new StapWatch();

и т.д. Но я не знаю как подключить библиоеку в С++

5
13 сентября 2009 года
hardcase
4.5K / / 09.08.2005
[quote='[NightMare];296691']есть вот такое
 
Код:
int i = 1;
i++;
И нужно подсчитать вот єто...[/quote]
При идеальном потоке команд любой современный процессор исполняет такие операции за 1 такт. В понимаете что при гигагерцовых частотах это время будет измеряться наносекундами?
Загрузить единицу в регистр - 1 такт, увеличить на единицу - 1 так. Итого: 2 такта.
5
13 сентября 2009 года
hardcase
4.5K / / 09.08.2005
[quote='[NightMare];296701']и результат 32![/quote]Ура! Вы собственноручно оценили квант времени в NT, который, согласно документации, равен 20 мс.
260
13 сентября 2009 года
Ramon
1.1K / / 16.08.2003
[QUOTE='[NightMare];296705']Вот именно чтоничего! Нужно более лучший алгоритм чем этот!

На C# сделать можно с помощью System.Diagnostic;
StopWatch st = new StapWatch();

и т.д. Но я не знаю как подключить библиоеку в С++[/QUOTE]

Подключив посчитаете другое стадо бегемотов. Смысл дури которую вы делаете не изменится.
23K
14 сентября 2009 года
ageron
17 / / 10.02.2007
ищи в гугле QueryPerfomanceCounter
42K
15 сентября 2009 года
machgun
25 / / 02.01.2009
для такого короткого кода самый верный способ использовать RDTSC.
Вот обсуждение аналогичной темы: http://www.gamedev.ru/code/forum/?id=86671
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог