<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Your "thread pools" approach sounds wise. While I don't (but should)
    know what CCL does right now w.r.t. threads, the "modern thing to
    do" is for Lisps to use native OS threads, which I can easily
    imagine take some time to launch, but then take good advantage of
    symmetric multiprocessing (SMP).  That's what Franz does anyway.  I
    assume, based on the compiler output I've studied, that CCL supports
    SMP threads. I would not expect that CCL runs its own scheduler
    anymore. [Wizards: please correct me if I'm wrong].<br>
    <br>
    --Tim<br>
    <br>
    <div class="moz-cite-prefix">On 1/5/24 10:54 AM, David McClain
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:9239C647-4950-4F51-9327-3E5A06B16921@refined-audiometrics.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      I have spent more than a decade implementing various versions of
      Actors systems. Some were along the lines you describe, launching
      native threads to perform the work of Actors.
      <div><br>
      </div>
      <div>I finally concluded that, having just run a good race, you
        ought not kill the race horses, but rather retire them to the
        stable for another race. IOW, I now use thread pools,
        permanently launched and waiting for dispatch to another task.
        Thread startup entails a huge amount of overhead - allocating
        stack space and CPU registers, registering with OS, etc.</div>
      <div><br>
      </div>
      <div>- DM<br id="lineBreakAtBeginningOfMessage">
        <div><br>
          <blockquote type="cite">
            <div>On Jan 5, 2024, at 07:32, Taoufik Dachraoui
              <a class="moz-txt-link-rfc2396E" href="mailto:dachraoui.taoufik@gmail.com"><dachraoui.taoufik@gmail.com></a> wrote:</div>
            <br class="Apple-interchange-newline">
            <div>
              <div dir="ltr">why ccl is much slower?
                <div><br>
                </div>
                <div>taoufik@Ankbot:~/workspace/ccl/actor$ sbcl<br>
                  This is SBCL 2.3.11, an implementation of ANSI Common
                  Lisp.<br>
                  More information about SBCL is available at <<a
                    href="http://www.sbcl.org/" moz-do-not-send="true"
                    class="moz-txt-link-freetext">http://www.sbcl.org/</a>>.<br>
                  <br>
                  SBCL is free software, provided as is, with absolutely
                  no warranty.<br>
                  It is mostly in the public domain; some portions are
                  provided under<br>
                  BSD-style licenses.  See the CREDITS and COPYING files
                  in the<br>
                  distribution for more information.<br>
                  * (time (prog1 t (loop for i from 0 upto 100000000
                  collect i)))<br>
                  Evaluation took:<br>
                    1.379 seconds of real time<br>
                    1.379015 seconds of total run time (0.856185 user,
                  0.522830 system)<br>
                    [ Real times consist of 1.143 seconds GC time, and
                  0.236 seconds non-GC time. ]<br>
                    [ Run times consist of 1.146 seconds GC time, and
                  0.234 seconds non-GC time. ]<br>
                    100.00% CPU<br>
                    2,913,031,106 processor cycles<br>
                    1,600,427,200 bytes consed<br>
                    <br>
                  T<br>
                  * (quit)<br>
                  taoufik@Ankbot:~/workspace/ccl/actor$ ccl<br>
                  Clozure Common Lisp Version 1.12.1
                  (v1.12.1-22-g6b1f1d3a) LinuxX8664<br>
                  <br>
                  For more information about CCL, please see <a
                    href="http://ccl.clozure.com/"
                    moz-do-not-send="true" class="moz-txt-link-freetext">http://ccl.clozure.com</a>.<br>
                  <br>
                  CCL is free software.  It is distributed under the
                  terms of the Apache<br>
                  Licence, Version 2.0.<br>
                  ? (time (prog1 t (loop for i from 0 upto 100000000
                  collect i)))<br>
                  (PROG1 T (LOOP FOR I FROM 0 UPTO 100000000 COLLECT I))<br>
                  took 11,946,514 microseconds (11.946514 seconds) to
                  run.<br>
                       11,147,722 microseconds (11.147722 seconds,
                  93.31%) of which was spent in GC.<br>
                  During that period, and with 24 available CPU cores,<br>
                       11,632,370 microseconds (11.632370 seconds) were
                  spent in user mode<br>
                          292,428 microseconds ( 0.292428 seconds) were
                  spent in system mode<br>
                   1,600,000,032 bytes of memory allocated.<br>
                   397,400 minor page faults, 0 major page faults, 0
                  swaps.<br>
                  T<br>
                  ? <br>
                </div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Fri, Jan 5, 2024 at
                  3:28 PM Taoufik Dachraoui <<a
                    href="mailto:dachraoui.taoufik@gmail.com"
                    moz-do-not-send="true" class="moz-txt-link-freetext">dachraoui.taoufik@gmail.com</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                  <div dir="ltr">It looks like it is not because of the
                    threads:
                    <div><br>
                    </div>
                    <div>taoufik@Ankbot:~/workspace/ccl/actor$ sbcl<br>
                      This is SBCL 2.3.11, an implementation of ANSI
                      Common Lisp.<br>
                      More information about SBCL is available at <<a
                        href="http://www.sbcl.org/" target="_blank"
                        moz-do-not-send="true"
                        class="moz-txt-link-freetext">http://www.sbcl.org/</a>>.<br>
                      <br>
                      SBCL is free software, provided as is, with
                      absolutely no warranty.<br>
                      It is mostly in the public domain; some portions
                      are provided under<br>
                      BSD-style licenses.  See the CREDITS and COPYING
                      files in the<br>
                      distribution for more information.<br>
                      * (time (reduce #'+ (loop for i from 0 upto
                      100000000 collect i)))<br>
                      Evaluation took:<br>
                        1.836 seconds of real time<br>
                        1.835223 seconds of total run time (1.351394
                      user, 0.483829 system)<br>
                        [ Real times consist of 1.184 seconds GC time,
                      and 0.652 seconds non-GC time. ]<br>
                        [ Run times consist of 1.184 seconds GC time,
                      and 0.652 seconds non-GC time. ]<br>
                        99.95% CPU<br>
                        3,876,850,246 processor cycles<br>
                        1,600,427,200 bytes consed<br>
                        <br>
                      5000000050000000<br>
                      * taoufik@Ankbot:~/workspace/ccl/actor$ ccl<br>
                      Clozure Common Lisp Version 1.12.1
                      (v1.12.1-22-g6b1f1d3a) LinuxX8664<br>
                      <br>
                      For more information about CCL, please see <a
                        href="http://ccl.clozure.com/" target="_blank"
                        moz-do-not-send="true"
                        class="moz-txt-link-freetext">http://ccl.clozure.com</a>.<br>
                      <br>
                      CCL is free software.  It is distributed under the
                      terms of the Apache<br>
                      Licence, Version 2.0.<br>
                      ? (time (reduce #'+ (loop for i from 0 upto
                      100000000 collect i)))<br>
                      (REDUCE #'+ (LOOP FOR I FROM 0 UPTO 100000000
                      COLLECT I))<br>
                      took 13,091,079 microseconds (13.091079 seconds)
                      to run.<br>
                           11,036,666 microseconds (11.036666 seconds,
                      84.31%) of which was spent in GC.<br>
                      During that period, and with 24 available CPU
                      cores,<br>
                           12,734,283 microseconds (12.734283 seconds)
                      were spent in user mode<br>
                              336,005 microseconds ( 0.336005 seconds)
                      were spent in system mode<br>
                       1,600,000,032 bytes of memory allocated.<br>
                       397,400 minor page faults, 0 major page faults, 0
                      swaps.<br>
                      5000000050000000<br>
                      ?<br>
                    </div>
                  </div>
                  <br>
                  <div class="gmail_quote">
                    <div dir="ltr" class="gmail_attr">On Fri, Jan 5,
                      2024 at 3:10 PM Taoufik Dachraoui <<a
                        href="mailto:dachraoui.taoufik@gmail.com"
                        target="_blank" moz-do-not-send="true"
                        class="moz-txt-link-freetext">dachraoui.taoufik@gmail.com</a>>
                      wrote:<br>
                    </div>
                    <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                      <div dir="ltr">Hi
                        <div><br>
                        </div>
                        <div>In my current implementation of a classical
                          actor model</div>
                        <div>I found that using ccl processes is much
                          slower than sbcl threads</div>
                        <div><br>
                        </div>
                        <div>to create a thread I use
                          <a class="moz-txt-link-freetext" href="ccl:process-run-function">ccl:process-run-function</a>, is there another way
                          to </div>
                        <div>create native threads that are much faster;
                          I do not need the ccl scheduling,</div>
                        <div>I want to create threads that are scheduled
                          by the OS, I think that the ccl </div>
                        <div>scheduler is the reason why my ccl tests
                          are much slower than the tests run </div>
                        <div>with sbcl</div>
                        <div>
                          <div><br>
                          </div>
                          <span class="gmail_signature_prefix">
                            <div><span class="gmail_signature_prefix">Regards</span></div>
                            -- </span><br>
                          <div dir="ltr" class="gmail_signature">
                            <div dir="ltr">Taoufik Dachraoui
                              <div><br>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </blockquote>
                  </div>
                  <br clear="all">
                  <div><br>
                  </div>
                  <span class="gmail_signature_prefix">-- </span><br>
                  <div dir="ltr" class="gmail_signature">
                    <div dir="ltr">Taoufik Dachraoui
                      <div><br>
                      </div>
                    </div>
                  </div>
                </blockquote>
              </div>
              <br clear="all">
              <div><br>
              </div>
              <span class="gmail_signature_prefix">-- </span><br>
              <div dir="ltr" class="gmail_signature">
                <div dir="ltr">Taoufik Dachraoui
                  <div><br>
                  </div>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>