[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Wed, 5 Dec 2018 21:56:28 -0600
So I pulled guile-2.9.1(beta) today, and gave it a spin. Looks
good/great! One bug -- some crazy multithreading bug,
reported as #33641
My use case: guile calling C++ code, which calls guile, which
calls C, ad nauseum. I have some 133 unit tests, of which
maybe 3/4ths tweak guile in some way. All but the
multi-threading pass, so happy!
Some comments about performance in this crazy-quilt
mixed environment. Most of code, both guile and C/C++
is fairly "thin", not doing a whole lot, before transitioning
into the other language. Thus, the performance is dominated
by the cost of the switch.
There are two different switches: from C++ to guile, and
from guile to C++. For the first, I'm seeing a rate of about
30K switches/sec C++ into guile (and back, this includes the return).
Calls going the other way are about 800K switches/sec
from guile into C++ (this also includes the return). This is
on a 2014-vintage machine.
Clearly a big difference between the two. Many years ago,
I profiled this, but don't recall the results. The profile did not
reveal anything I could control very much or at all.
Thus, In this scenario, I don't really expect the gnu lightning
bytecode to affect performance very much; I'm mostly
bottlnecked in the switching of environments.
FWIW, I'm seeing speedups of 1x to 1.5x for interpreted
mode, and 1.3x to 2x for compiled code. Don't read too
much into these numbers: They're crazy mixes of calls
going in both directions. But still, that's really quite good,
all things considered!
I cc'ed both guile-user and guile-devel; I'm not subscribed
to guile-devel, but also I did not see a 2.9.1-beta announce
cassette tapes - analog TV - film cameras - you
- guile-2.9.1 impressions,
Linas Vepstas <=