Exercício 1.22

3 views
Skip to first unread message

Carlos da Silva Santos

unread,
Aug 6, 2009, 5:09:17 PM8/6/09
to ei...@googlegroups.com
Olá,

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

Mario Domenech Goulart

unread,
Aug 6, 2009, 5:24:55 PM8/6/09
to ei...@googlegroups.com
Alô 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

Carlos da Silva Santos

unread,
Aug 10, 2009, 9:53:12 AM8/10/09
to ei...@googlegroups.com
Oi, Mario,

2009/8/6 Mario Domenech Goulart <mario....@gmail.com>:
Obrigado pela dica, acho que vai ser muito útil para trabalhar com o
chicken (para quem não tentou, o comando ",?" mostra várias outras
opções que não têm a ver com medida de tempo, p.ex. ",s" executa um
comando de shell). Para esse exercício, creio que o mais simples é
usar o current-miliseconds, o código para fazer a diferença entre os
tempos já é fornecido, então nem isso é preciso fazer.

[]s
Carlos


> Um abraço.
> Mario
>
> >
>
Reply all
Reply to author
Forward
0 new messages