[racket] suspicious timing in running test program
Ciao,
I am using "plt-r6rs" from Racket 5.1.1 (compiled with
default options) on a i686-pc-linux-gnu; when running the
tests of Nausicaa/Scheme[1] revision 0.2d10, with
precompiled libraries, I get some suspicious timing. First
I run a test file[2] which uses some techniques in macros
and I get:
$ make rtest file=vectors-xvectors
===> test file ../tests/test-vectors-xvectors.sps with Racket
*** testing xvectors
; *** checks *** : 86 correct, 0 failed.
real 69.83
user 65.20
sys 4.68
fine; then I run another test file[3] which uses the same
techniques in macros, but it enters a neverending loop and
when I am tired of waiting I kill the process and get:
$ make rtest file=arrays
===> test file ../tests/test-arrays.sps with Racket
^Cuser break
Command exited with non-zero status 1
real 1782.68
user 63.65
sys 1711.13
make: *** [rtest] Error 1
notice the big "sys" time portion; while CPU usage is 100%,
if there is memory usage increase it is too small to be
displayed by "top". Around line 437 of this test file there
is a LET form starting with:
(let (((array <array>)
and a bit of investigation leads me to think Racket enters a
long loop trying to expand this LET form which has a number
of "tagged" bindings not present in my other test files.
This LET is in truth a LET/WITH-CLASS syntax[4] which in
turn is expanded in an R6RS's LET with a nested WITH-CLASS
form[5], which in the end is expanded in a series of nested
LET-SYNTAX forms each defining a set of syntaxes and
identifier syntaxes for each tagged binding. If I am not
mistaken, while expanding this WITH-CLASS syntax Racket
takes bigger and bigger "sys" breaks.
The code looks correct to me; other R6RS implementations
can run the test without problems:
$make ptest vtest mtest file=arrays
===> test file ../tests/test-arrays.sps with Petite Chez
*** testing multidimensional arrays
; *** checks *** : 222 correct, 0 failed.
real 6.90
user 6.34
sys 0.12
===> test file ../tests/test-arrays.sps with Vicare
*** testing multidimensional arrays
; *** checks *** : 222 correct, 0 failed.
real 23.52
user 22.94
sys 0.37
===> test file ../tests/test-arrays.sps with Mosh
*** testing multidimensional arrays
; *** checks *** : 222 correct, 0 failed.
real 104.61
user 21.70
sys 82.55
This problem may be in the same category of another[6] I
already reported. I look forward to the new Racket release.
TIA
[1] <http://github.com/marcomaggi/nausicaa/downloads>
[2] <https://github.com/marcomaggi/nausicaa/blob/devel/scheme/tests/test-vectors-xvectors.sps>
[3] <https://github.com/marcomaggi/nausicaa/blob/devel/scheme/tests/test-arrays.sps>
[4] Line 165 of <https://github.com/marcomaggi/nausicaa/blob/devel/scheme/src/libraries/nausicaa/language/classes/binding-constructs.sls>
[5] Line 1332 of <https://github.com/marcomaggi/nausicaa/blob/devel/scheme/src/libraries/nausicaa/language/classes/core.sls>
[6] <http://www.mail-archive.com/users@racket-lang.org/msg05765.html>
--
Marco Maggi