<div class="gmail_quote">On Mon, Jan 18, 2010 at 7:49 AM, Yue Li <span dir="ltr"><<a href="mailto:xyly781@gmail.com">xyly781@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I'm a user of OpenAxiom computer algebra system. Today I used ECL cvs<br>
version (10.1.1) with multithreads enabled to build OpenAxiom.[...]<br>
It seems that by enabling multhreads gave a big slow down ;-(</blockquote><div><br></div><div>Yes, multithreading costs a huge factor because of several factors: binding of special variables, keeping an environment local to each thread, etc. For instance the lisp environment has to be stored in a thread-local storage and that costs _a lot_ to make in multiple systems -- it is absurd, but it is at least a function call for _every_ use of that storage in _every_ C function. Since we do not have the liberty to reserve a register for that purpose or having a hard-coded address for the translation table  (why the hell doesn't the ELF loaded do this?) the overal result is a slowdown of every function that uses resources such as the multiple values return array, the lisp stack, special variable bindings...</div>
<div><br></div><div>Juanjo</div></div><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com">http://juanjose.garciaripoll.googlepages.com</a><br>