Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
¿Cuál es la relación entre la frecuencia real de la CPU y el clock_t en C?

¿Cuál es la relación entre la frecuencia real de la CPU y el reloj_t (la unidad es el tictac del reloj ) en C?

Digamos que tengo la siguiente pieza de código C que mide el tiempo que la CPU consumió para ejecutar un bucle for .
Pero dado que CLOCKS_PER_SEC es un valor constante (básicamente 1000,000) en la biblioteca estándar de C, me pregunto cómo la función de clock mide los ciclos de CPU reales que consume el programa mientras se ejecuta en diferentes computadoras con diferentes frecuencias de CPU (por mi portátil, es de 2,6 GHz).

Y si no son relevantes, ¿cómo funciona el temporizador de la CPU en el escenario mencionado?

 #include <time.h> #include <stdio.h> int main(void) { clock_t start_time = clock(); for(int i = 0; i < 10000; i++) {} clock_t end_time = clock(); printf("%fs\n", (double)(end_time - start_time) / CLOCKS_PER_SEC); return 0; }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Efectivamente, los valores de clock_t no están relacionados con la frecuencia de la CPU.

Vea una explicación más larga aquí .

Si bien los valores de tipo clock_t podrían haber representado, en teoría, los pulsos reales del reloj físico de la CPU, en la práctica, no lo hacen: POSIX exige que CLOCKS_PER_SEC sea igual a 1,000,000, un millón. Así, la función clock_t devuelve un valor en microsegundos .

over 4 years ago · Santiago Trujillo Relatório

0

Para proporcionar la información utilizada en el código mostrado, medir/conocer/utilizar los ciclos de la CPU no es relevante.

Para proporcionar el tiempo transcurrido, solo es necesario medir el tiempo.
Leer un temporizador de hardware sería una forma de hacerlo.
La mayoría de las computadoras (incluso las que no están integradas) contienen temporizadores que cuentan especialmente los tictacs de un reloj con una frecuencia constante conocida. (Específicamente no son "temporizadores de CPU").
Tal temporizador se puede leer y produce un valor que aumenta una vez por tic (de período constante). Donde "período conocido" significa un período conocido por algún controlador apropiado para ese temporizador, simplificado "conocido por la función clock() , no necesariamente conocido por usted".

Tenga en cuenta que incluso si se conociera la cantidad de ciclos de CPU utilizados, calcular el tiempo transcurrido a partir de esa información es casi imposible hoy en día, en presencia de:

  • tuberías
  • paralelismos
  • interrumpe
  • predicción de rama

Más cosas que influyen/previenen el cálculo, de la contribución del comentario:

escalado de frecuencia, regulación de temperatura y ajustes de potencia (David C. Rankin)

over 4 years ago · Santiago Trujillo Relatório

0

No existe tal cosa como " la frecuencia real de la CPU". No en la computadora portátil de todos, en cualquier caso.

En muchos sistemas, el sistema operativo puede reducir y aumentar la velocidad del reloj de la CPU según lo crea conveniente. En algunos sistemas hay más de un tipo de procesador central o núcleo, cada uno con una velocidad diferente. Algunas CPU no tienen reloj (asíncronas).

Por todo esto y por otras razones, la mayoría de las computadoras miden el tiempo con un dispositivo de reloj separado, independiente del reloj de la CPU (si lo hay).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda