Метод расчета/получения тактовой частоты процессора в C?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Метод расчета/получения тактовой частоты процессора в C?

Сообщение Anonymous »

По заданию я пытался работать над проектом по проверке и получению системной информации в Linux либо на чистом C, либо на встроенном ASM. У меня сейчас возникла небольшая проблема с получением тактовой частоты.
Сначала я пытался просто прочитать из __cpuid:

Код: Выделить всё

__cpuid(0x80000002 + i, eax, ebx, ecx, edx);
Я не верю, что в процессорах AMD тактовая частота включена в эту строку. Теперь я использую rdtsc, чтобы получить довольно точную цифру, но чем больше я сокращаю время цикла ожидания занятости, тем больше точности я теряю. На данный момент у меня получилось вот что:

Код: Выделить всё

static inline uint64_t rdtsc() {
unsigned int lo, hi;
asm volatile ("rdtsc" : "=a" (lo), "=d" (hi));
return ((uint64_t)hi  Hz -> GHz)
double clock_speed_hz = (end - start) / elapsed_time;
double clock_speed_ghz = clock_speed_hz / 1e9;

printf("%.1f0 GHz\n", clock_speed_ghz);
}
Есть ли шанс сделать это быстрее?


Подробнее здесь: https://stackoverflow.com/questions/790 ... speed-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»