From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: Speed improvements to ido.el Date: Wed, 21 Nov 2012 07:37:13 +0400 Message-ID: <87fw438w46.fsf@yandex.ru> References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1353469042 7850 80.91.229.3 (21 Nov 2012 03:37:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 21 Nov 2012 03:37:22 +0000 (UTC) Cc: emacs-devel@gnu.org To: Daniel Skarda Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Nov 21 04:37:33 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Tb17z-00079c-6K for ged-emacs-devel@m.gmane.org; Wed, 21 Nov 2012 04:37:31 +0100 Original-Received: from localhost ([::1]:56053 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tb17o-0000tF-DE for ged-emacs-devel@m.gmane.org; Tue, 20 Nov 2012 22:37:20 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:34959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tb17l-0000t4-Qv for emacs-devel@gnu.org; Tue, 20 Nov 2012 22:37:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tb17k-0006DS-Hl for emacs-devel@gnu.org; Tue, 20 Nov 2012 22:37:17 -0500 Original-Received: from mail-lb0-f169.google.com ([209.85.217.169]:37837) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tb17k-0006DO-A6 for emacs-devel@gnu.org; Tue, 20 Nov 2012 22:37:16 -0500 Original-Received: by mail-lb0-f169.google.com with SMTP id gk1so5732407lbb.0 for ; Tue, 20 Nov 2012 19:37:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=vZaTPfqObUiHgHHoCZbRiCTZip9jl2sVQsO8xzrE6/Q=; b=tYJuyBMuJKLRUzONd2C6VzcehCuDKjWK/wGix16Tk+kk+auEgcBtPLQm558EWyApY6 /Tqkgl3sXG/4PQaDU3CG/AUUG941xEautO6ziSXdhNEP5OKIuBaY459Vhix84zKoUlvr 1jsHMyIP1kiQ4fKIwhJURLxkJQfmArt8fz53+IQOlHqH1kxQFRGSas8ed6gS/5TWPF1x 6h1yC7TLQJ2JienuBWHhADPbvzC07RmlzwDXhp2/bezF7HT/y37X+J/HNTIz2yFubqST jNIygH2nO/1WdLs8v54l6gShqHEPifMrH9wR4jzEw4PGxK5Zht5rhy65B9+CnP/cCtde ZUGA== Original-Received: by 10.112.30.200 with SMTP id u8mr7138205lbh.104.1353469035198; Tue, 20 Nov 2012 19:37:15 -0800 (PST) Original-Received: from SOL ([178.252.98.87]) by mx.google.com with ESMTPS id so7sm5495855lab.0.2012.11.20.19.37.13 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 20 Nov 2012 19:37:14 -0800 (PST) In-Reply-To: (Daniel Skarda's message of "Tue, 20 Nov 2012 19:25:17 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (windows-nt) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.217.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:155010 Archived-At: Daniel Skarda writes: Hey Daniel, Like Leo said, please provide some numbers. A comparison to the current trunk would be best, since it contains an additional optimization compared to the emacs-24 branch. Here my test setup from the relevant discussion: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12796#47 --Dmitry > I like to use ido mode for everything, including very large lists (like M-x or > info). Unfortunately ido is not suitable for such lists. On my old notebook, > performance is not amazing, so I took the challenge and spend some time with > profiler. > > I improved the performance in several steps: > > - inlined several functions > - disabled ido-case-fold for some completions (eg commands) > - prunning collections based on character bitmaps > - caching character bitmaps during completion or for same completions > - caching intermediate completion lists when adding new characters > > You can view my changes on github: > > - https://github.com/orfelyus/ido-speed-hack > - https://github.com/orfelyus/ido-mode-el > > - (and optionally) https://github.com/orfelyus/ido-better-flex > > ido-speed-hack includes large changes (bitmaps) while ido-mode-el includes minor > changes to ido.el > > The changes made huge speed improvements on my notebook and ido does not feel > sluggish even with very large lists. > > Could you please test my improvements? I would appreciate any feedback. > Dan > > ps: I am not subscribed to the mailing list, please keep me in Cc