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

C++

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

Perfomance x86 1мкс - C++

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

perfomance x86 <=1мкс

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

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

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

дайте плиз ссылки на код c++ с использованием rdstc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2009, 11:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Perfomance x86 1мкс (C++):

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

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

Возможно ли из приложения x86 попасть в директорию System32 на операционной системе (x64) - C++ Builder
Доброго дня прошу подсказки Возможно ли из приложения написанного под 32 bit платформу попасть в директорию System32 на операционной...

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

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

Апгрейд с Home Basic x86 до Ultimate x86 - Windows 7
Здравствуйте, хочу, чтобы функция flip 3d была в системе, но как известно home basic ее не поддерживает, так вот такой вопрос, можно ли как...

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

есть где примеры по rtsdc ?
0
Humanoid
Почетный модератор
9870 / 3769 / 173
Регистрация: 12.06.2008
Сообщений: 11,175
30.08.2009, 15:21 #4
Цитата Сообщение от _mayor
уже узнавал - 1 мс
Эта штука работает на частоте процессора. У меня (3 ГГц) получается 3*10^-10 секунды (333 пикосекунды).
0
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 16:02  [ТС] #5
Цитата Сообщение от Humanoid Посмотреть сообщение
Эта штука работает на частоте процессора. У меня (3 ГГц) получается 3*10^-10 секунды (333 пикосекунды).
можно ссылку на код?
0
Humanoid
Почетный модератор
9870 / 3769 / 173
Регистрация: 12.06.2008
Сообщений: 11,175
30.08.2009, 17:12 #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;
Хотя, погрешности тут получаются всё равно большие... возможно, это связано с вызовом самой функции.
0
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 17:45  [ТС] #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)

может кто видел, какой нить туториал, в котором объясняется, что все эти кавычки равно букафки означают?
0
M128K145
Эксперт С++
8299 / 3519 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
30.08.2009, 19:20 #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++ и борландах нет
1
30.08.2009, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2009, 19:20
Привет! Вот еще темы с ответами:

Как установить Windows 10 x64 (после обновления с Win 7 x86 до Win 10 x86) сохранив лицензию - Windows 10
Вопрос такой. У меня стояла седьмая 32-ух битная винда. Но процессор 64 разрядный. Так вот, я обновился до десятки, которая тоже 32-ух...

Пустой журнал diagnostic-perfomance - Windows 7
Поставил win7 на sdd, открываю журнал, чтобы посмотреть скорость загрузки винды - а там нет событий! Ранее пользовался этой сборкой,...

Различия по весу между Windows 7 Ultimate (x86) и Windows 7 Professional (x86) - Windows 7
Здравствуйте, Скажите есть различия по весу между установленными Windows 7 Ultimate (x86) и Windows 7 Professional (x86)? Ведь в Ultimate...

Perfomance routing (PFR) lab (в GNS3) - Cisco
Всем привет. Сделал лабу в GNS3. (одна под 15.1 (7200), вторая под IOU 15.4) Оба варианта не дают нужного результата - переключение...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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