<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    This is one of the deviant and brilliant features of CCL: "look ma,
    no interpreter." Every other Lisp has to fastidiously maintain
    equivalent semantics between <b>eval</b> and the compiler.  This
    was more of a burden when not-yet-standardized Lisp semantics were a
    moving target, like around when lexical closures were introduced.
    Before CCL there was Coral Software's ObjectLogo, which used the
    same strategy.  The trick there was to present to the Logo REPL <i>user</i>,
    the <i>appearance</i> that their code was interpreted (in the grand
    tradition of Logos not having a compiler).  For example, when an
    error was recognized at compile-time, the error <i>message</i> was
    reported at run time.<br>
    <br>
    <div class="moz-cite-prefix">On 1/5/24 1:15 PM, Tim Bradshaw wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:64C0C10E-FDD2-4FA7-BE1D-2B871C068475@tfeb.org">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">I didn't know that: thanks.</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">However in this case it looks mostly like the SBCL
        GC is doing better: CCL is spending 85% of the time in GC, SBCL
        somewhat less (about 65%).</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">I am trying to think of a case where a
        microbenchmark like this tells you anything useful about real
        programs.  But I can't.</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">--tim</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">
        <blockquote type="cite">On 5 Jan 2024, at 17:55, Ron Garret
          <a class="moz-txt-link-rfc2396E" href="mailto:ron@flownet.com"><ron@flownet.com></a> wrote:<br>
          <br>
        </blockquote>
      </div>
      <blockquote type="cite">
        <div dir="ltr">
          <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8">
          CCL compiles everything.  The SBCL compiler is just better.<br
            class="">
          <div><br class="">
            <blockquote type="cite" class="">
              <div class="">On Jan 5, 2024, at 9:11 AM, Tim Bradshaw
                <<a href="mailto:tfb@tfeb.org"
                  class="moz-txt-link-freetext" moz-do-not-send="true">tfb@tfeb.org</a>>
                wrote:</div>
              <br class="Apple-interchange-newline">
              <div class="">
                <meta http-equiv="content-type"
                  content="text/html; charset=UTF-8" class="">
                <div dir="auto" class="">
                  <div dir="ltr" class="">You realise that SBCL is
                    almost certainly compiling this and CCL is almost
                    certainly not?</div>
                  <div dir="ltr" class=""><br class="">
                  </div>
                  <div dir="ltr" class="">--tim</div>
                  <div dir="ltr" class=""><br class="">
                    <blockquote type="cite" class="">On 5 Jan 2024, at
                      14:29, Taoufik Dachraoui <<a
                        href="mailto:dachraoui.taoufik@gmail.com"
                        class="moz-txt-link-freetext"
                        moz-do-not-send="true">dachraoui.taoufik@gmail.com</a>>
                      wrote:<br class="">
                      <br class="">
                    </blockquote>
                  </div>
                  <blockquote type="cite" class="">
                    <div dir="ltr" class="">
                      <div dir="ltr" class="">It looks like it is not
                        because of the threads:
                        <div class=""><br class="">
                        </div>
                        <div class="">taoufik@Ankbot:~/workspace/ccl/actor$
                          sbcl<br class="">
                          This is SBCL 2.3.11, an implementation of ANSI
                          Common Lisp.<br class="">
                          More information about SBCL is available at
                          <<a href="http://www.sbcl.org/"
                            class="moz-txt-link-freetext"
                            moz-do-not-send="true">http://www.sbcl.org/</a>>.<br
                            class="">
                          <br class="">
                          SBCL is free software, provided as is, with
                          absolutely no warranty.<br class="">
                          It is mostly in the public domain; some
                          portions are provided under<br class="">
                          BSD-style licenses.  See the CREDITS and
                          COPYING files in the<br class="">
                          distribution for more information.<br class="">
                          * (time (reduce #'+ (loop for i from 0 upto
                          100000000 collect i)))<br class="">
                          Evaluation took:<br class="">
                            1.836 seconds of real time<br class="">
                            1.835223 seconds of total run time (1.351394
                          user, 0.483829 system)<br class="">
                            [ Real times consist of 1.184 seconds GC
                          time, and 0.652 seconds non-GC time. ]<br
                            class="">
                            [ Run times consist of 1.184 seconds GC
                          time, and 0.652 seconds non-GC time. ]<br
                            class="">
                            99.95% CPU<br class="">
                            3,876,850,246 processor cycles<br class="">
                            1,600,427,200 bytes consed<br class="">
                            <br class="">
                          5000000050000000<br class="">
                          * taoufik@Ankbot:~/workspace/ccl/actor$ ccl<br
                            class="">
                          Clozure Common Lisp Version 1.12.1
                          (v1.12.1-22-g6b1f1d3a) LinuxX8664<br class="">
                          <br class="">
                          For more information about CCL, please see <a
                            href="http://ccl.clozure.com/"
                            class="moz-txt-link-freetext"
                            moz-do-not-send="true">http://ccl.clozure.com</a>.<br
                            class="">
                          <br class="">
                          CCL is free software.  It is distributed under
                          the terms of the Apache<br class="">
                          Licence, Version 2.0.<br class="">
                          ? (time (reduce #'+ (loop for i from 0 upto
                          100000000 collect i)))<br class="">
                          (REDUCE #'+ (LOOP FOR I FROM 0 UPTO 100000000
                          COLLECT I))<br class="">
                          took 13,091,079 microseconds (13.091079
                          seconds) to run.<br class="">
                               11,036,666 microseconds (11.036666
                          seconds, 84.31%) of which was spent in GC.<br
                            class="">
                          During that period, and with 24 available CPU
                          cores,<br class="">
                               12,734,283 microseconds (12.734283
                          seconds) were spent in user mode<br class="">
                                  336,005 microseconds ( 0.336005
                          seconds) were spent in system mode<br class="">
                           1,600,000,032 bytes of memory allocated.<br
                            class="">
                           397,400 minor page faults, 0 major page
                          faults, 0 swaps.<br class="">
                          5000000050000000<br class="">
                          ?<br class="">
                        </div>
                      </div>
                      <br class="">
                      <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"
                            class="moz-txt-link-freetext"
                            moz-do-not-send="true">dachraoui.taoufik@gmail.com</a>>
                          wrote:<br class="">
                        </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" class="">Hi
                            <div class=""><br class="">
                            </div>
                            <div class="">In my current implementation
                              of a classical actor model</div>
                            <div class="">I found that using ccl
                              processes is much slower than sbcl threads</div>
                            <div class=""><br class="">
                            </div>
                            <div class="">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 class="">create native threads that are
                              much faster; I do not need the ccl
                              scheduling,</div>
                            <div class="">I want to create threads that
                              are scheduled by the OS, I think that the
                              ccl </div>
                            <div class="">scheduler is the reason why my
                              ccl tests are much slower than the tests
                              run </div>
                            <div class="">with sbcl</div>
                            <div class="">
                              <div class=""><br class="">
                              </div>
                              <span class="gmail_signature_prefix">
                                <div class=""><span
                                    class="gmail_signature_prefix">Regards</span></div>
                                -- </span><br class="">
                              <div dir="ltr" class="gmail_signature">
                                <div dir="ltr" class="">Taoufik
                                  Dachraoui
                                  <div class=""><br class="">
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </blockquote>
                      </div>
                      <br class="" clear="all">
                      <div class=""><br class="">
                      </div>
                      <span class="gmail_signature_prefix">-- </span><br
                        class="">
                      <div dir="ltr" class="gmail_signature">
                        <div dir="ltr" class="">Taoufik Dachraoui
                          <div class=""><br class="">
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
              </div>
            </blockquote>
          </div>
          <br class="">
        </div>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>