Software  
 
Rede de conhecimento computador >> Software >> Quicktime >> Content
Como posso implementar um cronômetro no Fortran para medir o tempo de execução do meu programa?
A Fortran oferece várias maneiras de implementar um cronômetro para medir o tempo de execução. A melhor abordagem depende de suas necessidades de precisão e portabilidade. Aqui estão três métodos comuns:

1. Usando a função intrínseca `cpu_time` (mais simples, mas menos precisa):

Este é o método mais fácil, construído diretamente em Fortran. `Cpu_time` retorna o tempo do processador usado pelo programa desde o seu início em segundos. Geralmente, é menos preciso do que outros métodos, principalmente em sistemas multi-core, onde pode não refletir o tempo verdadeiro de encrotamento da parede.

`` `fortran
Programa timing_example
implícito nenhum
Real ::start_time, end_time, suspenso_time

Ligue para CPU_TIME (start_time)

! Seu código a ser cronometrado vai aqui
! ... cálculos longos ...

Ligue para CPU_TIME (END_TIME)

suspensa_time =end_time - start_time
Print *, "Tempo decorrido da CPU:", Dasaped_time, "segundos"

final do programa Timing_Example
`` `

2. Usando a sub-rotina intrínseca `System_clock` (mais precisa, dependente da plataforma):

`System_clock` fornece mais controle e precisão potencialmente mais alta. Permite especificar as unidades do tempo retornado (por exemplo, segundos, milissegundos, microssegundos). No entanto, as unidades disponíveis e a precisão são dependentes do sistema.

`` `fortran
Programa timing_example_system_clock
implícito nenhum
Inteiro, parâmetro ::count_rate =1000! Taxa de contagem em milissegundos
Inteiro ::start_count, end_count, elepsed_count
real ::suspensa_time

Call System_clock (start_count, count_rate)

! Seu código a ser cronometrado vai aqui
! ... cálculos longos ...

Call System_clock (end_count, count_rate)

Dasped_Count =end_count - start_count
suspensa_time =real (suspensa_count) / real (count_rate)
Imprima *, "Tempo decorrido:", DasaD_Time, "segundos"

Timing do programa final_example_system_clock
`` `

3. Usando bibliotecas específicas da plataforma (o mais preciso, menos portátil):

Para as medições de tempo de maior precisão e mais precisas, pode ser necessário interagir com as bibliotecas específicas do sistema operacional. Essa abordagem é menos portátil porque o código precisará de ajustes para diferentes sistemas (Linux, Windows, MacOS).

* Linux (usando `gettimeOfday`): Você precisaria declarar uma interface para a função `gettimeofday`" do arquivo de cabeçalho ``. Isso envolve o uso do módulo `iso_c_binding` e manuseio cuidadoso de tipos. Exemplo (requer tratamento de erros para o código de produção):

`` `fortran
Programa timing_example_gettimeofday
Use ISO_C_Binding
implícito nenhum
inclua 'time.h' // ou use uma alternativa adequada para o seu compilador. Alguns compiladores não precisam de incluir explícitos.

TIPO (C_PTR) ::TV
Inteiro (c_int) ::rc
Double Precision ::start_time, end_time, elepsed_time

alocar (TV)
rc =c_getTimeOfday (tv, c_null_ptr)! Obtenha o horário de início
start_time =c_f_double (c_loc (tv)%tempo) + c_f_double (c_loc (tv)%tv_sec)

! Seu código a ser cronometrado vai aqui
! ... cálculos longos ...

rc =c_getTimeOfday (tv, c_null_ptr)! Obtenha o horário de término
end_time =c_f_double (c_loc (tv)%tempo) + c_f_double (c_loc (tv)%tv_sec)
Dealpor (TV)

suspensa_time =end_time - start_time
Imprima *, "Tempo decorrido:", DasaD_Time, "segundos"

final do programa Timing_Example_getTimeOfday
`` `

Lembre-se de compilar com os sinalizadores apropriados para vincular as bibliotecas necessárias (por exemplo, `-lrt` para` getTimeOfday` no Linux). O comando de compilação exato depende do seu compilador (Gfortran, ifort, etc.).

Escolha o método que melhor atenda às suas necessidades. Para um momento simples, `cpu_time` é suficiente. Para melhor precisão, use `System_clock`. Para a maior precisão e o tempo de parede mais preciso, considere o uso de bibliotecas específicas da plataforma, mas esteja atento às implicações de portabilidade. Esteja sempre ciente de que a resolução do timer varia bastante entre os sistemas. Portanto, você não deve esperar precisão de microssegundos em todas as plataformas e configurações.

Anterior :

Próximo :
  Os artigos relacionados
·Qual é o tempo de transmissão? 
·Problemas com o Quicktime Uninstall 
·Como importar Widescreen em QuickTime 
·Como Incorporar QuickTime Player em Websites 
·Como adiciono atraso de tempo em um arquivo em lote? 
·Como você pode impedir que o pop-up do Magic Jack apar…
·O que é o timer no microprocessador? 
·Sistemas operacionais suportados Com o QuickTime 
·Como você implementa um temporizador WD no software? 
·Como remover som em QuickTime 
  Artigos em destaque
·Como ocultar uma lista de endereços global do Exchange…
·Como fazer uma tabela com dados no Excel 2007 
·Como maximizar a área de trabalho remota 
·Como converter números armazenados como texto em macro…
·A melhor maneira de fazer uma imagem maior no Photoshop…
·DTS Tutorial Microsoft 
·Como desinstalar o Norton no Mac OSX 
·Como mostrar uma marca d'água em cada página no MS Wo…
·O que é uma gravação mestre? 
·Qual sistema é baseado em um conjunto de modelos de so…
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados