From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Re: Bignum performance (was: Shrinking the C core) Date: Tue, 15 Aug 2023 16:03:42 +0200 Message-ID: <875y5gh075.fsf@dataswamp.org> References: <87bkfartof.fsf@localhost> <175cf474-29c8-a482-072e-0de784ac59e8@gmail.com> <87o7jaqc31.fsf@localhost> <2d419e12-9239-de3e-47d0-38815a00025f@gmail.com> <87cyzqq7sx.fsf@localhost> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21674"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: emacs-devel@gnu.org Cancel-Lock: sha1:dAA2Y86wt4al5YuRFecxdrNDlRM= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Aug 15 16:53:39 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qVvQP-0005M0-Bj for ged-emacs-devel@m.gmane-mx.org; Tue, 15 Aug 2023 16:53:37 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qVvP9-0006Jo-8O; Tue, 15 Aug 2023 10:52:19 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qVueL-0007vH-Jc for emacs-devel@gnu.org; Tue, 15 Aug 2023 10:03:57 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qVueH-0004Ch-Ku for emacs-devel@gnu.org; Tue, 15 Aug 2023 10:03:57 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1qVueE-000AFs-Qc for emacs-devel@gnu.org; Tue, 15 Aug 2023 16:03:50 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 15 Aug 2023 10:52:17 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:308757 Archived-At: Ihor Radchenko wrote: >> The declaration means we are lying to the compiler because >> Z gets bigger than 53 bits eventually. And all bets are off >> because of the OPTIMIZE declaration. The result is that >> everything is done in fixnums on 64-bit machines. > > That explains a lot :) > > I now tried > > (defun fib (reps num) > (declare (optimize speed (safety 0) (debug 0))) > (let ((z 0)) > ;; (declare (type (unsigned-byte 53) reps num z)) > (dotimes (r reps) > (let*((p1 1) > (p2 1)) > (dotimes (i (- num 2)) > (setf z (+ p1 p2) > p2 p1 > p1 z)))) > z)) > > and got > > $ SBCL_HOME=/usr/lib64/sbcl perf record sbcl --load /tmp/fib.cl > > ;;; 0.263333 s real time > ;;; 0.263641 s run time > > $ ~/Git/emacs/src/emacs -Q -batch -l /tmp/fib.eln > 0.739 s > > Still ~3x faster compared to Elisp, but not orders > of magnitude. A pretty good optimization! :O But what kind of optimization is it? Also, what happens if you remove the OPTIMIZE declaration as well? Still, isn't the rule of the "beat the benchmark" game to beat it as fast as possible? -- underground experts united https://dataswamp.org/~incal