From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eval Exec Newsgroups: gmane.emacs.devel Subject: [PATCH] Improve `tab-line-tabs-fixed-window-buffers` sorting performance Date: Fri, 5 Jul 2024 22:27:10 +0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000813f7c061c80dc77" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27424"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jul 05 20:15:17 2024 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 1sPnSn-00070k-0e for ged-emacs-devel@m.gmane-mx.org; Fri, 05 Jul 2024 20:15:17 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sPnSF-0002UT-Op; Fri, 05 Jul 2024 14:14:43 -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 1sPjuN-0001T4-81 for emacs-devel@gnu.org; Fri, 05 Jul 2024 10:27:31 -0400 Original-Received: from mail-oa1-x43.google.com ([2001:4860:4864:20::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sPjuE-0000T5-Ph for emacs-devel@gnu.org; Fri, 05 Jul 2024 10:27:27 -0400 Original-Received: by mail-oa1-x43.google.com with SMTP id 586e51a60fabf-25982aa59efso809324fac.3 for ; Fri, 05 Jul 2024 07:27:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720189641; x=1720794441; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=m1c3X2lYO2m0RNm8g8k9pYg/zWi+Mpub++KMfKhIplA=; b=e5Z+fJJPn+niyLNsfn+xvR1c+sAF+1qdwW397cj7Z8fUJk1LF13KNWNUdWrTJSgqzv Y8b1KrpDqaqVfnKReGt+9T4KTYlwzsHxYjtRnYoCe8Ns6HBY/AtKrbscF9M3Galq6jCS FwNrl7t7G7i100lKWCOZtaRybatKLsUPR6VUKGaCLmGshygR7RIb96+RANkpgak9o5qU RNqP4qv7OrxjtASzgTNInzfcs+/daumwoiTau63IkRHk75vwdSuDGfjuYpmiqkcdqqus OdFJPXKnO36wf/DyjzkzyDcQc8XY2MPhq1hTeXmOmJvDS6Oh8VfrME7aSKnnKjXLwgmY n+VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720189641; x=1720794441; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=m1c3X2lYO2m0RNm8g8k9pYg/zWi+Mpub++KMfKhIplA=; b=tzRNvhCEiRd/wkM4Ksp2TNicyz/kRAuU4/f1BzoKC4xyCd6d4QD5gWn9Si/AYDoGd2 7d/a4VfJFJVvzfXiVzwQuW1KEUnhHve0OnftGq02V45jOIZB+OfdlZEN0CYrA3UOrUGv 7nQb5OBpjAV855kzWl3nQ3NXfN+6YdQlOy6+RgtK9sKaB74Cn14ZQHa7PNsjAZIRAUXz eT/fOd/gn4TvJl+ZPnGaZK1bpSBN/pGbRT5OPoaAi/VDAJpMgluXCVCEV9ZG3+fZsXBt o7d7fxDrGxc1o//qMkaJwmyg1TDjqWLp5KLSjajRP5stEDHZXmg6WwQVSFgp6Y5Jozw6 u7xQ== X-Gm-Message-State: AOJu0YzHtpYd+3pL5HowbxQJ0avwfK/uZQGfXtczOca88QWOk1or7Qa/ RQ8j52vKkIQP/dkZRKm2ZHbwtwH8i2tB6R/CR9Fx20fNSFVMPuWH/GveAkuTx9vh6b0DuG+PK/E wFoT/5YQnHh10+5144bXPM9wCxZ6ctQbsDRV1gg== X-Google-Smtp-Source: AGHT+IFpxnQaPSK4+sKeltNEW79kFyEQsJOwSCD5bgcWSuF+8HR+dDa9fNzxraIAsC0YNa8i7CVxvsNx68BcXXNBHGA= X-Received: by 2002:a05:6870:eca3:b0:254:c1d7:463a with SMTP id 586e51a60fabf-25e2ba1ff93mr4004101fac.21.1720189641102; Fri, 05 Jul 2024 07:27:21 -0700 (PDT) Received-SPF: pass client-ip=2001:4860:4864:20::43; envelope-from=execvy@gmail.com; helo=mail-oa1-x43.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 05 Jul 2024 14:14:40 -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:321395 Archived-At: --000000000000813f7c061c80dc77 Content-Type: text/plain; charset="UTF-8" Hello, After noticing severe lag when `buffer-list` exceeds 1000 buffers, particularly with `tab-line-switch-to-prev-tab` and `tab-line-switch-to-next-tab`, a profiler revealed that the sorting operation in `tab-line-tabs-fixed-window-buffers` heavily relies on the `seq-position` function. This reliance significantly impacts performance. To address this, I have proposed a patch to optimize the buffer sorting mechanism within `tab-line-tabs-fixed-window-buffers`. The solution involves replacing the inefficient `seq-position` calls with a hash table to cache buffer positions, which markedly enhances performance when handling large buffer lists. This is my first attempt at hacking Emacs. Do you have any suggestions on this idea? Thank you --000000000000813f7c061c80dc77 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Improve-tab-line-tabs-fixed-window-buffers-sorting-p.patch" Content-Disposition: attachment; filename="0001-Improve-tab-line-tabs-fixed-window-buffers-sorting-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly8s9qh10 RnJvbSBmYTA0N2E1MmMwZDQwYWFjZTIzNmJkNTZmMWQ4Y2E3MDkzNWY0MzhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdmFsIEVYRUMgPGV4ZWN2eUBnbWFpbC5jb20+CkRhdGU6IEZy aSwgNSBKdWwgMjAyNCAxODo1MzozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmUgYHRh Yi1saW5lLXRhYnMtZml4ZWQtd2luZG93LWJ1ZmZlcnNgIHNvcnRpbmcKIHBlcmZvcm1hbmNlCgoq IGxzcC90YWItbGluZS5lbCAodGFiLWxpbmUtdGFicy1maXhlZC13aW5kb3ctYnVmZmVycyk6IEVu aGFuY2VkCmB0YWItbGluZS10YWJzLWZpeGVkLXdpbmRvdy1idWZmZXJzYCBwZXJmb3JtYW5jZSBi eSBvcHRpbWl6aW5nIGJ1ZmZlcgpzb3J0aW5nIG1lY2hhbmlzbS4gUmVwbGFjZWQgaW5lZmZpY2ll bnQgYHNlcS1wb3NpdGlvbmAgY2FsbHMgd2l0aCBhIGhhc2gKdGFibGUgdG8gY2FjaGUgYnVmZmVy IHBvc2l0aW9ucywgc2lnbmlmaWNhbnRseSBpbXByb3Zpbmcgc3BlZWQgd2hlbgpoYW5kbGluZyBs YXJnZSBidWZmZXIgbGlzdHMuCi0tLQogbGlzcC90YWItbGluZS5lbCB8IDggKysrKysrLS0KIDEg ZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvbGlzcC90YWItbGluZS5lbCBiL2xpc3AvdGFiLWxpbmUuZWwKaW5kZXggMWQxNGZkYTk4MjUu LmU0OTA4YzYxNTQyIDEwMDY0NAotLS0gYS9saXNwL3RhYi1saW5lLmVsCisrKyBiL2xpc3AvdGFi LWxpbmUuZWwKQEAgLTU1NSwxMCArNTU1LDE0IEBAIFRoaXMgbWVhbnMgdGhhdCBzd2l0Y2hpbmcg dG8gYSBidWZmZXIgcHJldmlvdXNseSBzaG93biBpbiB0aGUgc2FtZQogd2luZG93IHdpbGwga2Vl cCB0aGUgc2FtZSBvcmRlciBvZiB0YWJzIHRoYXQgd2FzIGJlZm9yZSBzd2l0Y2hpbmcuCiBBbmQg bmV3bHkgZGlzcGxheWVkIGJ1ZmZlcnMgYXJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHRhYiBs aW5lLiIKICAgKGxldCogKChvbGQtYnVmZmVycyAod2luZG93LXBhcmFtZXRlciBuaWwgJ3RhYi1s aW5lLWJ1ZmZlcnMpKQorICAgICAgICAgKGJ1ZmZlci1wb3NpdGlvbnMgKGxldCAoKGluZGV4LXRh YmxlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzZXEtZG8taW5kZXhlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxh bWJkYSAoYnVmIGlkeCkgKHB1dGhhc2ggYnVmIGlkeCBpbmRleC10YWJsZSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvbGQtYnVmZmVycykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5kZXgtdGFibGUpKQogICAgICAgICAgKG5ldy1idWZmZXJzIChzb3J0ICh0YWItbGlu ZS10YWJzLXdpbmRvdy1idWZmZXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZXkg KGxhbWJkYSAoYnVmZmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Ig KHNlcS1wb3NpdGlvbiBvbGQtYnVmZmVycyBidWZmZXIpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb3N0LXBvc2l0aXZlLWZpeG51bSkpKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChnZXRoYXNoIGJ1ZmZlciBidWZmZXItcG9zaXRpb25zIG1v c3QtcG9zaXRpdmUtZml4bnVtKSkpKSkKICAgICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIgbmlsICd0 YWItbGluZS1idWZmZXJzIG5ldy1idWZmZXJzKQogICAgIG5ldy1idWZmZXJzKSkKIAotLSAKMi40 NC4xCgo= --000000000000813f7c061c80dc77--