guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU Guile 2.1.7 released (beta)


From: Andy Wingo
Subject: Re: GNU Guile 2.1.7 released (beta)
Date: Tue, 28 Feb 2017 15:03:06 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

On Tue 28 Feb 2017 10:38, David Kastrup <address@hidden> writes:

> Andy Wingo <address@hidden> writes:
>> I understand that Lilypond uses the "local-eval" facility a lot for
>> embedded Scheme.
>
> It doesn't use it at all.

Ah, tx for the info (here and below).

> Regular read and eval, however, is used a lot during the parsing of
> files and startup of LilyPond.  But at least under Guile-1.8, the
> parsing and preprocessing took up a rather small part of the overall
> runtime (in the order of 15% or so), so it is unlikely to be responsible
> for the bulk of the slowdown.
>
> My personal guess is that the largest performance impact at the moment
> will be due to an absence of generation and installation of .go files.

This makes sense to me.  As you know, using .go files allows you to
avoid read and expansion costs at run-time.  I guess Lilypond disables
auto-compilation for its Scheme files also, and doesn't manually compile
files / expressions?  In that case you're also suffering the slower
"eval" in 2.0 / 2.2 compared to 1.8 and not benefitting from the
compiler.  I agree that fixing that would probably be the first step for
someone working on Lilypond perf.

> Since .go files are target-dependent (if I am not mistaken) and LilyPond
> is cross-compiled for a number of architectures with different byte
> orders and type sizes, it seems tricky to get this under wraps.

Yeah.  In both 2.0 and 2.2 there are only four "targets" really (32-bit
and 64-bit, big- and little-endian), so it's somewhat manageable.
"guild compile" does support cross-compilation, and I think there are
some projects that do so; but yep, wiring that up can be tricky like you
say.

Andy



reply via email to

[Prev in Thread] Current Thread [Next in Thread]