Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
_mayor
1 / 1 / 1
Регистрация: 29.08.2009
Сообщений: 63
1

Perfomance x86 1мкс

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

perfomance x86 <=1мкс

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

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

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

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

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

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

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

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

Установка 2010 professional x86 на xp sp3 x32
Доброго времени суток. VS не могу поставить, когда идет установка система...

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

есть где примеры по rtsdc ?
0
Humanoid
Почетный модератор
9962 / 3849 / 344
Регистрация: 12.06.2008
Сообщений: 11,367
30.08.2009, 15:21 4
Цитата Сообщение от _mayor
уже узнавал - 1 мс
Эта штука работает на частоте процессора. У меня (3 ГГц) получается 3*10^-10 секунды (333 пикосекунды).
0
_mayor
1 / 1 / 1
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 16:02  [ТС] 5
Цитата Сообщение от Humanoid Посмотреть сообщение
Эта штука работает на частоте процессора. У меня (3 ГГц) получается 3*10^-10 секунды (333 пикосекунды).
можно ссылку на код?
0
Humanoid
Почетный модератор
9962 / 3849 / 344
Регистрация: 12.06.2008
Сообщений: 11,367
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 / 1
Регистрация: 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
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
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

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

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

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


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

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

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