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

C++

Войти
Регистрация
Восстановить пароль
 
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
#1

Perfomance x86 1мкс - C++

30.08.2009, 11:25. Просмотров 877. Ответов 7
Метки нет (Все метки)

perfomance x86 <=1мкс

для определения производительности нужен счетчик на уровне 10**-6 секунды

вроде видел возможность вывода из ядра линукса такой информации

есть ли счетчики такой точности в ХП ?

дайте плиз ссылки на код c++ с использованием rdstc
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2009, 11:25     Perfomance x86 1мкс
Посмотрите здесь:

График: определить мкс. значение - C++ Builder
На одном графике у меня три синусоиды. Как определить при каких x все три графика находятся выше оси ох одновременно? И как найти при...

Отправка UDP пакетов с задержкой в 5 мкс - C++
Здравствуйте.Как раз не давно с толкнулся с проблемой реализации отправки UDP пакетов с задержкой в 5 мкс.Хотел использовать функцию...

Программа Renesas - High-Perfomance Embedded Workshop - C++
Пожалуйста поделитесь знаниями! Расскажите о Renesas - HEW; знаю что в ней можно написать прогу на С, а каковы еще ее возможности?

C++ x86 и x64 - C++
Есть ли в программировании в C++ x86 и x64?

ReadProcessMemory из x86 для х64 - C++ WinAPI
Компилирую из под x86 всё здорово... запускаю на x64 - не может прочитать строку командную для процесса... Для 64 бит компилировать мне...

x86 интерпретатор исходный код - C++
кто-нибудь слышал про интерпретаторы x86? в инете нарыл только что в qemu, bochs есть встроенные интерпретаторы команд x86 процессора,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Humanoid
Почетный модератор
9830 / 3828 / 163
Регистрация: 12.06.2008
Сообщений: 11,451
30.08.2009, 11:43     Perfomance x86 1мкс #2
Смотри QueryPerformanceCounter и QueryPerformanceFrequency
В общем, с помощью QueryPerformanceFrequency узнаёшь, на кокой частоте работает счётчик... а с помощью QueryPerformanceCounter уже можно получить значение этого счётчика.
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 15:16  [ТС]     Perfomance x86 1мкс #3
Цитата Сообщение от Humanoid Посмотреть сообщение
Смотри QueryPerformanceCounter и QueryPerformanceFrequency
В общем, с помощью QueryPerformanceFrequency узнаёшь, на кокой частоте работает счётчик... а с помощью QueryPerformanceCounter уже можно получить значение этого счётчика.
уже узнавал - 1 мс, слишком мало

есть где примеры по rtsdc ?
Humanoid
Почетный модератор
9830 / 3828 / 163
Регистрация: 12.06.2008
Сообщений: 11,451
30.08.2009, 15:21     Perfomance x86 1мкс #4
Цитата Сообщение от _mayor
уже узнавал - 1 мс
Эта штука работает на частоте процессора. У меня (3 ГГц) получается 3*10^-10 секунды (333 пикосекунды).
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 16:02  [ТС]     Perfomance x86 1мкс #5
Цитата Сообщение от Humanoid Посмотреть сообщение
Эта штука работает на частоте процессора. У меня (3 ГГц) получается 3*10^-10 секунды (333 пикосекунды).
можно ссылку на код?
Humanoid
Почетный модератор
9830 / 3828 / 163
Регистрация: 12.06.2008
Сообщений: 11,451
30.08.2009, 17:12     Perfomance x86 1мкс #6
Я на Делфи пишу. Но в Си должно быть так же (только не знаю как там называется аналог Int64 )
Delphi
1
2
3
4
5
6
7
8
9
Var F, C1, C2 : Int64;
begin
  QueryPerformanceFrequency(F);
  QueryPerformanceCounter(C1);
  // Действия, время которых нужно измерить
  QueryPerformanceCounter(C2);
//  С2-С1  - это количество тактов счётчика... если это разделить на частоту F, то получится время в секундах
  Form1.Caption := FloatToStr((C2-C1)/F);
end;
Хотя, погрешности тут получаются всё равно большие... возможно, это связано с вызовом самой функции.
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 17:45  [ТС]     Perfomance x86 1мкс #7
скомуниздил через grep -r "rdtsc" /usr/src/linux* макрос
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
#define rdtsc(low,high) \
    __asm__ __volatile__("rdtsc" : "=a" (low) , "=d" (high) )
 
int main() {
    unsigned int asc,bsk;
    rdtsc(asc,bsk);
    __asm__ __volatile__("nop"  );
    cout<<asc<<"\t"<<bsk<<endl;
    rdtsc(asc,bsk);
    cout<<asc<<"\t"<<bsk<<endl;
}
вроде заработало, только не могу понять, что означает : "=a" (low) , "=d" (high)

может кто видел, какой нить туториал, в котором объясняется, что все эти кавычки равно букафки означают?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2009, 19:20     Perfomance x86 1мкс
Еще ссылки по теме:

Приложение не запускается на windows xp x86 - Visual C++
Здравствуйте. Написал программу на С++, MFC. Использовал VS2015, windows 7. У препода стоит windows xp x86. В итоге он пишет мне что не...

Различие recvfrom между x86 и ARM - C++
Добрый день, столкнулся с такой проблемой. Кусок по приему UDP сообщений на X86 отрабатывает корректно, а тот же код, скомпилированный под...

Установка 2010 professional x86 на xp sp3 x32 - Visual C++
Доброго времени суток. VS не могу поставить, когда идет установка система валиться на бок. Даже не знаю что делать. Давным давно уже...

Как определить, являются ли какие-то 4 байта (в x86) именно указателем? - C++
Привет форумчане :) Допустим: int x = 6; long pointer = (long)&amp;x; //Можно ли определить, что &quot;pointer&quot; это укзатель? int y =...


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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
30.08.2009, 19:20     Perfomance x86 1мкс #8
Вот пример использования
__rdtsc()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <intrin.h>
int main()
{
    unsigned __int64 start, end;
    int k(0);
    start = __rdtsc();
    k++;
    end = __rdtsc();
    std::cout<<"k++ = "<<(end - start);
    system("pause");
    return 0;
}

ЗЫ. Работает в MS VS. В Dev-C++ и борландах нет
Yandex
Объявления
30.08.2009, 19:20     Perfomance x86 1мкс
Ответ Создать тему
Опции темы

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