unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: Guix-devel <Guix-devel@gnu.org>
Subject: Performance improvements
Date: Mon, 14 Oct 2019 23:39:28 +0200	[thread overview]
Message-ID: <87r23fknvz.fsf@gnu.org> (raw)

Hello Guix!

I just wanted to share that recent commits have improved the performance
of ‘package-derivation’ and related operations quite a bit:

  8f417ed280 gnu: commencement: Further optimize the package object graph.
  f618134e4c build-system/gnu: 'package-with-explicit-inputs' uses 'package-mapping'.
  dab669e075 gnu: ld-wrapper: Memoize.
  099dbc4fd3 gnu: Improve memoization of 'package-with-bootstrap-guile'.
  99b73d0f0c gnu: commencement: Reduce the graph of package objects.
  9a45a24f7f gnu: Remove unnecessary uses of 'package-with-bootstrap-guile'.

What these commits do is that they greatly reduce the graph of <package>
objects built in ‘commencement.scm’.  As a result, there’s much less
work to do, less code to run, less stuff to memoize, all that.  :-)

Before these changes, if you’d run, say:

  guix graph -e '(@@ (gnu packages commencement) gnu-make-final)'

you’d see the <package> graph was huge and had a weird shape.  Indeed,
many parts were duplicated as a consequence of graph rewriting.  That’s
not news, but it became more visible with the reduced binary seed
boostrap, which adds quite a few nodes and edges.

The commit logs have more details, but the take-away is:

--8<---------------cut here---------------start------------->8---
$ time /var/guix/profiles/per-user/ludo/current-guix-109-link/bin/guix build libreoffice -nd
/gnu/store/7whsss0gn7h4dqvz627sq3i4cb1qlc1v-libreoffice-6.1.5.2.drv

real    0m3.238s
user    0m3.693s
sys     0m0.047s
$ time guix build libreoffice -nd
/gnu/store/8drmbhsrayr2j5lkvrwq37rg8g06hgsw-libreoffice-6.1.5.2.drv

real    0m2.142s
user    0m2.323s
sys     0m0.082s
$ guix describe
Generacio 110   Oct 14 2019 08:43:33    (nuna)
  guix bd04fe8
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: bd04fe878627a14533d908ccdf5b906050d6e0a4
--8<---------------cut here---------------end--------------->8---

I think we need to aim for 1s, but that’s already a good step.

Ludo’.

             reply	other threads:[~2019-10-14 21:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-14 21:39 Ludovic Courtès [this message]
2019-10-15  6:35 ` Performance improvements Pierre Neidhardt
2019-10-15  7:24 ` Jan Nieuwenhuizen
2019-10-19 20:17   ` Ludovic Courtès
2019-10-15  8:21 ` Dimakakos Dimos
2019-10-15 18:21 ` Efraim Flashner
2019-10-19 20:17   ` Ludovic Courtès
2019-10-27 23:06 ` Ludovic Courtès
2019-10-28  7:44   ` Pierre Neidhardt
2019-10-28  7:56   ` Efraim Flashner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r23fknvz.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=Guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).