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: Re: Speed improvements to ido.el Date: Thu, 22 Nov 2012 10:36:01 +0100 Message-ID: References: <87fw438w46.fsf@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b6d89b230225104cf12333f X-Trace: ger.gmane.org 1353576999 8275 80.91.229.3 (22 Nov 2012 09:36:39 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 22 Nov 2012 09:36:39 +0000 (UTC) Cc: emacs-devel@gnu.org To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 22 10:36:51 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 1TbTDC-0002DL-9K for ged-emacs-devel@m.gmane.org; Thu, 22 Nov 2012 10:36:46 +0100 Original-Received: from localhost ([::1]:40255 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TbTD1-0004DJ-Co for ged-emacs-devel@m.gmane.org; Thu, 22 Nov 2012 04:36:35 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:46512) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TbTCt-0004AJ-Cq for emacs-devel@gnu.org; Thu, 22 Nov 2012 04:36:33 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TbTCp-00045n-01 for emacs-devel@gnu.org; Thu, 22 Nov 2012 04:36:27 -0500 Original-Received: from mail-qa0-f41.google.com ([209.85.216.41]:48869) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TbTCo-00045h-Qe for emacs-devel@gnu.org; Thu, 22 Nov 2012 04:36:22 -0500 Original-Received: by mail-qa0-f41.google.com with SMTP id c26so796000qad.0 for ; Thu, 22 Nov 2012 01:36:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=X9kwyy/+ftbJzKcjqSlplonFTklPEQbVD59JKhsbkn4=; b=d78RjIkWNh9wIjabr7obTc9OnyBa6wrV+i/Mam0iHi0rDaivf7QBrjtH8Kt3C4qWAp 1cU1hqY8cFUSIa7O8T6pH48NAPlr2LmlIP3o3/DWdZBBqVYYwE1RgUKYR59xVxANtQ/r HSViQFoQtdIBHbwFuUVMIJiBn/o4zy6VRJldz50GIzuHMq7GEoHosAO89CxWD9EHD2Ta 0CBAhQ+aMRaP5wtlUOcl9yQ+rEtp26oNAc7McpA8B0RwZMXc0lKYSbBoIAw46bWVkdzz Fjd8dvLvUrJDjNWiy8B2IuWi2CJcvAwJ9fhemetHNUi1n8/aDS2NgpQhLvUe5Tx7zmhI jKOA== Original-Received: by 10.49.82.199 with SMTP id k7mr24334623qey.52.1353576981995; Thu, 22 Nov 2012 01:36:21 -0800 (PST) Original-Received: by 10.49.107.105 with HTTP; Thu, 22 Nov 2012 01:36:01 -0800 (PST) In-Reply-To: <87fw438w46.fsf@yandex.ru> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.216.41 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:155038 Archived-At: --047d7b6d89b230225104cf12333f Content-Type: text/plain; charset=KOI8-R Hi Dmitry, thanks for the suggestions. I will prepare some benchmarks using new Emacs and send the results. I already did some statistics with elp during development, but I suspect that the numbers are not precise. I am curious which improvements will be the fastest :) Regards, Dan On Wed, Nov 21, 2012 at 4:37 AM, Dmitry Gutov wrote: > 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 > --047d7b6d89b230225104cf12333f Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: quoted-printable Hi Dmitry,

thanks for the suggestions. I will prepare some ben= chmarks using new Emacs and send the results.
I already did some st= atistics with elp during development, but I suspect that the numbers are no= t precise.

I am curious which improvements will be the fastest :)<= /div>

Regards,
Dan

On Wed, Nov 21, 2012 at 4:37 AM, Dmitry Gutov <dgutov@yandex.ru= > wrote:
Daniel Skarda <dan.skarda@gmail.com> 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=3D12796#47

--Dmitry

> I like to use ido mode for everything, including very large lists (lik= e M-x or
> info). Unfortunately ido is not suitable for such lists. On my old not= ebook,
> performance is not amazing, so I took the challenge and spend some tim= e 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<= br> > - 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 incl= udes minor
> changes to ido.el
>
> The changes made huge speed improvements on my notebook and ido does n= ot 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

--047d7b6d89b230225104cf12333f--