From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Skarda Newsgroups: gmane.emacs.devel Subject: Speed improvements to ido.el Date: Tue, 20 Nov 2012 19:25:17 +0100 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b6da0c44d69f304cef15c50 X-Trace: ger.gmane.org 1353448486 12793 80.91.229.3 (20 Nov 2012 21:54:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 20 Nov 2012 21:54:46 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Nov 20 22:54:58 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 1TavmT-0007hT-8E for ged-emacs-devel@m.gmane.org; Tue, 20 Nov 2012 22:54:57 +0100 Original-Received: from localhost ([::1]:45062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TavmI-0004yF-U7 for ged-emacs-devel@m.gmane.org; Tue, 20 Nov 2012 16:54:46 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:55450) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TasW2-000227-E1 for emacs-devel@gnu.org; Tue, 20 Nov 2012 13:25:52 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TasVu-0003t9-JM for emacs-devel@gnu.org; Tue, 20 Nov 2012 13:25:46 -0500 Original-Received: from mail-qc0-f169.google.com ([209.85.216.169]:50080) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TasVu-0003t4-Ef for emacs-devel@gnu.org; Tue, 20 Nov 2012 13:25:38 -0500 Original-Received: by mail-qc0-f169.google.com with SMTP id t2so4800643qcq.0 for ; Tue, 20 Nov 2012 10:25:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=IMPkVULZkbREcUujAVLA//7XXdD7GCHHzXhkBquDJg8=; b=0eDbqc6naB4k/k/O6if29DNeDjaikHL0Bu99xsJYyNZE6F46ZwndNwaxCFLCD7xMyq +f6kKYsM2YnM6UQaDTFsdWO0jYMdgLvtQfrcMPrz8cTXRCxypqTdc+v7avR4j2W5ZK2h T1Vx2syynEmevw1BdxgtzvFhO9xGSfjEG5MpkRtyfkXkZZ7trQaAsaFgwQpsOP9zteUW ivNjeEgf2Vpz5+H/bYO7eQOHFuINHq0/Zz2l04mpGkZMHJokfERMzXkpPLhgNpa1PdQF XutFqH0yzc+iOUcn96o8Nw3Pw1DX/nObHVfo9W+qmAtc3bCd0WD141M/IDoX8Y7BylPg utWQ== Original-Received: by 10.49.72.1 with SMTP id z1mr18333107qeu.2.1353435937859; Tue, 20 Nov 2012 10:25:37 -0800 (PST) Original-Received: by 10.49.107.105 with HTTP; Tue, 20 Nov 2012 10:25:17 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.216.169 X-Mailman-Approved-At: Tue, 20 Nov 2012 16:54:44 -0500 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:155008 Archived-At: --047d7b6da0c44d69f304cef15c50 Content-Type: text/plain; charset=ISO-8859-1 Hello, 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 --047d7b6da0c44d69f304cef15c50 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello,

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 c= hallenge and spend some time with profiler.

I improved the performance in several steps:
=
- inlined several functions
- disabled ido-ca= se-fold for some completions (eg commands)
- prunning collections= based on character bitmaps
- caching character bitmaps during completion or for same completions<= /div>
- caching intermediate completion lists when adding new character= s

You can view my changes on github:


=

ido-speed-hack includes large changes (bitmaps) while i= do-mode-el includes minor changes to ido.el=A0

The changes made huge speed improvements on my notebook= and ido does not feel sluggish even with very large lists.=A0
Could you please test my improvements? I would appreciate any = feedback.
Dan

ps: I am not subscribed to the mailing li= st, please keep me in Cc
--047d7b6da0c44d69f304cef15c50--