From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Newsgroups: gmane.emacs.devel Subject: Re: What's missing in ELisp that makes people want to use cl-lib? Date: Tue, 14 Nov 2023 02:44:58 +0000 Message-ID: References: <8734xetjkk.fsf@yahoo.com> <87cywhsrcf.fsf@yahoo.com> <87cywgx1z0.fsf@web.de> <83wmuowwp3.fsf@gnu.org> <8334xcwank.fsf@gnu.org> <320999cc-6c83-2315-0044-cc0403400af3@gutov.dev> <9ab5d2bd-a648-cae0-a4a7-ae86be10af0f@gutov.dev> <87r0kuqxbf.fsf@gmail.com> <54e115a2-fc36-3056-a030-0dbf32416ddb@gutov.dev> <43f290b0-4119-597b-c89a-0fb4c7db1665@gutov.dev> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000005db2f6060a13bb42" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31951"; mail-complaints-to="usenet@ciao.gmane.io" Cc: =?UTF-8?Q?Gerd_M=C3=B6llmann?= , Eli Zaretskii , michael_heerdegen@web.de, emacs-devel@gnu.org To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Nov 14 03:43:15 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 1r2jOU-0008CO-MF for ged-emacs-devel@m.gmane-mx.org; Tue, 14 Nov 2023 03:43:14 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r2jNY-0000wS-8l; Mon, 13 Nov 2023 21:42:16 -0500 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 1r2jNQ-0000w2-R5 for emacs-devel@gnu.org; Mon, 13 Nov 2023 21:42:10 -0500 Original-Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r2jNO-0004wM-Lr; Mon, 13 Nov 2023 21:42:08 -0500 Original-Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-2c503dbe50dso71122371fa.1; Mon, 13 Nov 2023 18:42:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699929724; x=1700534524; darn=gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pKoL4OY6dCEi0Yw0pFyAnCjuqr2Xa5YBFXnztDIWaC4=; b=Ch+VbxI4mID10MX3yyEGfXSivp38AZMa81NmlayVNwO2NvGaUenyw6wIP15QYOympy e17NB9nwwD18Jq7xaMI1axUBRcnD27mxCWJz5hE/z4I5lv7h36+nfb2s49anvswxcI1x VhrOb0f1knCaK7qx5/MEjVY+bd+rPmsU/jStLatQOYWzMuPAyMrX6cPLMvgwheudy5Pp 8M4LpuND2qF46f5JdVVYxaQYsVCz5tJhTa6VIuh1vdln+hlC2cpD/EbU8cljmgNF+OgE PixgUMu8HrHKfYuL6ZXAI9L3lYTLAkFcgXkiZvwtQeoOa79N6tLZEONsXJotnK6fExIF yPwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699929724; x=1700534524; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pKoL4OY6dCEi0Yw0pFyAnCjuqr2Xa5YBFXnztDIWaC4=; b=BIseI0r/fXZhSv1heQc3oD4nuT23Dpc4E+/WKC1BQoKe4SVHzgGfxpOa9jvQw4XDE5 AnytWUMfdghSbf93AzpPYPnCjRdGKPJ9xgi+afFo/BTzVg2plXEdyui+aubgqZ7B6Si6 12ZghKy7BIXS/7FJPOuwQk7MjdncTc998jUx7ujWVwAS+krwUo70Z7HaUK5U/MoigVeh JWY+WutZajw4GoV1gR/tqi0O5vuM66zbxEHtkUeLIoOQNhSGePdIQ3OtszojuUXcSq+m uu3uk94CQS2E3lDxGKW2lqEG8AJ2fZR9mFFwS+f7clverrR5iVbaLmhFexRNAbkY455h AZ7w== X-Gm-Message-State: AOJu0YxZkYLQKLkIL/xLuVHdTt1qIUODEnqNUt5Q2g93g5g5luoK5mO4 5N7yJ3wlRl5qH4xXboX7Yu4kmvCQMnc+RUAMk+R/rsKTjTu3eA== X-Google-Smtp-Source: AGHT+IGxzQH0eY6wP3EeKFlnZ4ZkZ/Nj6lI23PCH2LcHyGV67JcHEyBSkTKJIX11vunfFX2t0yr+FwzPS8lk3Q0Ms90= X-Received: by 2002:a05:6512:e93:b0:507:a003:57a2 with SMTP id bi19-20020a0565120e9300b00507a00357a2mr7029899lfb.52.1699929724399; Mon, 13 Nov 2023 18:42:04 -0800 (PST) In-Reply-To: Received-SPF: pass client-ip=2a00:1450:4864:20::236; envelope-from=joaotavora@gmail.com; helo=mail-lj1-x236.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action 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:312707 Archived-At: --0000000000005db2f6060a13bb42 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Nov 14, 2023 at 2:27=E2=80=AFAM Jo=C3=A3o T=C3=A1vora wrote: > > > The case in the CL world against generic functions' performance > is often not that the dispatch is slow, but that > That said, it still matters, of course. Here's your non-destructive seq-difference-3 but with many small lists: (setq cc (make-list 12 "blabla")) (setq list2 (make-list 12 "shooveedoowaa")) ;; (4.225398191 31 2.3103362619999928) (benchmark-run 1000000 (cl-set-difference cc list2 :test #'equal)) ;; (6.959332908 56 4.235225837999991) (benchmark-run 1000000 (seq-difference-3 cc list2)) And of course the destructive version still wins by 10x ;; (0.676608019 4 0.26997238299998116) (benchmark-run 1000000 (cl-nset-difference cc list2 :test #'equal)) Jo=C3=A3o --0000000000005db2f6060a13bb42 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Tue, Nov 14, 2023 at 2:27=E2=80=AFAM Jo=C3=A3o T=C3=A1vora &l= t;joaotavora@gmail.com> wrot= e:


The case in the CL world against generic f= unctions' performance=C2=A0
is often not that the dispatch is= slow, but that
=C2=A0
That said, it still matters, of course.=C2=A0 Here's your = non-destructive=C2=A0
seq-difference-3 but with many small lists:=

(setq cc (make-list 12 "blabla"))
(s= etq list2 (make-list 12 "shooveedoowaa"))

;; (4.225398191 31 2.3103362619999928)
(benchmark-run 1000000 (cl-set-= difference cc list2 :test #'equal))

;; (6.959332908 56 4.2352258= 37999991)
(benchmark-run 1000000 (seq-difference-3 cc list2))
=

And of course the destructive version still wins by 10x=

;; (0.676608019 4 0.26997238299998116)
(benchm= ark-run 1000000 (cl-nset-difference cc list2 :test #'equal))

Jo=C3=A3o
--0000000000005db2f6060a13bb42--