Pergunta

É possível determinar a taxa de transferência de um aplicativo em um processador a partir da contagem de ciclo (ciclos de instrução do processador) consumida pelo aplicativo? Se sim, como calculá -lo?

Foi útil?

Solução

Se o processo estiver totalmente vinculado à CPU, você divide a velocidade do processador pelo número de ciclos para obter a taxa de transferência.

Na realidade, poucos processos são totalmente vinculados à CPU, nesse caso, você deve levar em consideração outros fatores (velocidade do disco, velocidade da memória, serialização etc.).

Outras dicas

Simples:

#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it

Observe que o valor que você obtém é uma aproximação, para mais informações, veja o clock() página de homem.

Algumas CPUs têm interno Registros de desempenho O que permite coletar todos os tipos de estatísticas interessantes, como ciclos de instrução (às vezes até por unidade de execução), cache erram, nº de leituras de cache/memória, etc., você pode acessar diretamente, mas dependendo do que CPU e OS que você está usando, pode haver ferramentas existentes que gerenciam todos os detalhes para você por meio de uma GUI. Freqüentemente, uma boa ferramenta de perfil tem suporte para registros de desempenho e permite coletar estatísticas usando -as.

Se você usar o Cortex-M3 Do micro Ti/luminar, você pode usar o driverlib entregue por Ti/Micro Luminary. Usando as funções Systick, você pode definir o ciclo do processador SystickPeriod: para ter um relógio de processador entre interrupções. Ao contar o número de interrupções, você deve obter uma "estimativa quase suficiente" sobre quanto tempo é necessário um bloqueio de função ou função.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top