O exercício 1.22 envolve medir o tempo de execução de uma rotina para
achar números primos. O código sugerido usa uma rotina "runtime" para
pegar a medida do tempo, mas não a encontrei no Chicken Scheme. Acho
que a rotina equivalente seria "current-milliseconds", então é uma
questão de colocar uma linha "(define runtime current-milliseconds)"
para rodar o código do livro.
Por sinal, o exercício ficou meio desatualizado :-) Com a velocidade
dos computadores atuais, acho que vai ser preciso procurar por primos
por volta de 10^9 para conseguir uma medida mais confiável. Procurando
por primos na ordem de 10^4, como o exercício pede, o tempo de
execução ficou zerado.
[]s
Carlos
On Thu, 6 Aug 2009 21:09:17 +0000 Carlos da Silva Santos <carlos....@gmail.com> wrote:
> O exercício 1.22 envolve medir o tempo de execução de uma rotina para
> achar números primos. O código sugerido usa uma rotina "runtime" para
> pegar a medida do tempo, mas não a encontrei no Chicken Scheme. Acho
> que a rotina equivalente seria "current-milliseconds", então é uma
> questão de colocar uma linha "(define runtime current-milliseconds)"
> para rodar o código do livro.
Não vi como é o exercício, mas se for para medir o tempo de execução de
uma expressão, podes usar um comando especial do REPL de Chicken:
CHICKEN
(c)2008 The Chicken Team
(c)2000-2007 Felix L. Winkelmann
Version 3.4.0 - linux-unix-gnu-x86 [ manyargs dload ptables
applyhook hostpcre ]
compiled 2008-09-29 on debian (Linux)
#;1> (define (hey!) (print "hey!"))
#;2> ,t (hey!)
hey!
0 seconds elapsed
0 seconds in (major) GC
3 mutations
0 minor GCs
0 major GCs
Se digitares ,? no REPL, verás mais opções.
Também podes usar `current-milliseconds', mas precisarás pegar o tempo
antes e depois da execução do que queres medir, e aí fazer a diferença.
É com base nisso que o Alejandro Cuervo montou um esquema esperto para
profiling (http://wiki.freaks-unidos.net/simple-profiler).
Um abraço.
Mario