From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id sFjyMZ0Y8GGZCwEAgWs5BA (envelope-from ) for ; Tue, 25 Jan 2022 16:34:53 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 6GaRLp0Y8GFOBAEAauVa8A (envelope-from ) for ; Tue, 25 Jan 2022 16:34:53 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 2083F35DA7 for ; Tue, 25 Jan 2022 16:34:53 +0100 (CET) Received: from localhost ([::1]:53238 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nCNqN-0000ub-J4 for larch@yhetil.org; Tue, 25 Jan 2022 10:34:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54094) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nCMUJ-0007oz-J8 for emacs-orgmode@gnu.org; Tue, 25 Jan 2022 09:07:59 -0500 Received: from [2a00:1450:4864:20::12c] (port=46075 helo=mail-lf1-x12c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nCMU9-0003u1-Tt for emacs-orgmode@gnu.org; Tue, 25 Jan 2022 09:07:59 -0500 Received: by mail-lf1-x12c.google.com with SMTP id o12so13576516lfg.12 for ; Tue, 25 Jan 2022 06:07:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=YJ4ApskjULDxv2Y7qKqXuzNl2RZubbrw+yS3lRylGQA=; b=cJj9dwhL2BMNXX3ynNhU4kZ8n0j4HJvoq3HFYuEdQTR2ocVx+1A7gGAG0xvZ0WJQsO NmvIJ66bzfsa5XA5nB6q/7Z4UuU2yG274+T26isV1qDcD0G1+nRHf46JKnDEJJB420Zj YzwAnfgfJ0x3Vcg2/yB/702U7eOPTPBtUcgHshXwAPgkH0B88SC4EN3LrpmA+1Y06HLt ylm8bvMxB9AZOMH5ON7EZGir/4/RZADFbxvMY7quD1m9Rle7YzepcthkKkwCvZh58R8p P9PPq5dKUB1FukXW4Gg/xAw3SiYqSkObRphbyLleqY8z9orPXkbsiZ5GVDU7KXxXGdqp J0Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=YJ4ApskjULDxv2Y7qKqXuzNl2RZubbrw+yS3lRylGQA=; b=mYJ8L6e8zNz8q1eyn6UMUmAH84CkXE8Jc8KkFxt4xRIAt/lobT2fkEioo/lC5WSSmW LCknBV5RCaeFEe3VGVbtdQu3ArmIKPC1t2MOPyZl3ppcrBrRIzOtx/oXmoWpt0wONijh x2qtwzeHKahXPB7aQgNzzhHCkJAvIPcpugMbeB9eJC9aoTx247jEMS6a//8r/2M9pHxe CnO+lSX02iunySl1kGHbw09iikmlGmW6bO2nksS5KIZIQFjgjNGmbInvZ4FQEvW73ntt sTQFETe2JbV0P9GN1WV+4kOzzxkFCrJQyEFORgMubfj7tFu61w3vX5s7ltvY533Z13U4 mvZQ== X-Gm-Message-State: AOAM530GfOKVHqqRoXSdDT59iw2Ex8+PocKN6fYY8ZNTqtuO5tcXBAF/ F+IIpGbrSy0j4TE9//B3dKU= X-Google-Smtp-Source: ABdhPJy+A3tudb6irCuaog0U376ylFOXTuGvcU3nH8LYVucYIzDALsakjYCCfVUcGIvb9rSZOy8zsA== X-Received: by 2002:ac2:4827:: with SMTP id 7mr11898585lft.406.1643119622592; Tue, 25 Jan 2022 06:07:02 -0800 (PST) Received: from localhost ([91.210.107.150]) by smtp.gmail.com with ESMTPSA id j16sm1500967lfg.244.2022.01.25.06.07.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jan 2022 06:07:02 -0800 (PST) From: Ihor Radchenko To: pareto optimal Subject: Re: Poor org-babel-tangle-file performance with more than 100 trivial noweb-references In-Reply-To: <147178804.982080.1643087944384@ichabod.co-bxl> References: <147178804.982080.1643087944384@ichabod.co-bxl> Date: Tue, 25 Jan 2022 22:11:25 +0800 Message-ID: <87k0enx5v6.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::12c (failed) Received-SPF: pass client-ip=2a00:1450:4864:20::12c; envelope-from=yantar92@gmail.com; helo=mail-lf1-x12c.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.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_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: emacs-orgmode@gnu.org Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1643124893; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=YJ4ApskjULDxv2Y7qKqXuzNl2RZubbrw+yS3lRylGQA=; b=s2QGVxFhQg0kv/jq3hIbSzjHyu0GlWDhFHJlqSWqqI9J66rvY86y0HK6fn+hM2oz1FD7BU I/JKIMx7V7JiP2HIOHUg8H5k0kXl9rlba663rKykeet3DD+c4xuqOydfb7PIofpi68FOBE 0BmKu8RCYyUrnwfd2tDmlsNNRWTwbY9M7CUNnYyUgdefHGMDa9eYzLG7Sk3V7X86Wk8moj Ylaps3cZNOPQjpDsgbTXTUWVAPZyWu+eWuOkMX1xO5ekKkkoHt8M8CfIxU3b5V3n3O2iDZ SLHyofPhBvPqawIOp/P23fbPKfpeTCikeSbTmAcCUbWqL4loBIgr4BlG6jMTFg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1643124893; a=rsa-sha256; cv=none; b=U6j4vxMPHxXqbHqo2wWZ4IA8SbXg9/p5GsnSkhgVygQBJAO/0Fh4knmjM7bP11PvYOoVUY YL8pUuwq5k2T3YfZw4QT8Q2PSnqYFurlQMHBMzcZ5QilI34wo2FGltvNXTG/SgmCeWRzDn szjtW1x1CeBkCC+CbI/ifCOV9ESNIoyblSi0grprhsFtIL1BUmQf51IRgkiFLK4a2+1qKJ bj8+zgQByObvnwoiSL10IDIuq2W5g9NYTupnt1qYBI6Ff8HZAq44CbE/Dys7TlW62j6ftL KFqKXKgdm9B3vu+57wuBlg26UeB1CykNAEe5R4touv0u8M8frwLjoIDa+tOB6Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=cJj9dwhL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -5.33 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=cJj9dwhL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 2083F35DA7 X-Spam-Score: -5.33 X-Migadu-Scanner: scn0.migadu.com X-TUID: YD5OUJFtGVhl --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable pareto optimal writes: > Using =3Demacs -Q=3D to tangle org files with more than over 100 noweb-re= fs gets slow fast. > > Given this org code for N=3D2: > Using Gcc Emacs 28.0.91 (which I typicall use) I get these results: > > | N blocks | runtime | # of GCs | > |----------+---------+----------| > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 10 |=C2=A0=C2=A0 0.027 |=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0 | > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 20 |=C2=A0=C2=A0 0.049 |=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0 | > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 40 |=C2=A0=C2=A0 0.121 |=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0 | > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 80 |=C2=A0=C2=A0 0.391 |=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0 | > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 160 |=C2=A0=C2=A0 1.426 |=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 0 | > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 320 |=C2=A0=C2=A0 6.765 |=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 0 | > |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 640 |=C2=A0 23.972 |=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 0 | > > so roughly it scales like: > > #+begin_example > 0.8x (10-20) > 2.5x=C2=A0 (20-40) > 3x=C2=A0 (40-80) > 3.5x=C2=A0 (160-320) > 4x=C2=A0 (320-640) > #+end_example > > Though I'm not sure how much that can tell us... my guess is noweb-ref's = don't use a dictionary with =3DO(1)=3D lookups? Thanks for the nice benchmark and for providing a test case! You are using stable version of Org. We did some important performance improvements on main. The same benchmark using latest main (26decec): | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.030 | 0 | | 20 | 0.067 | 0 | | 40 | 0.065 | 0 | | 80 | 0.081 | 0 | | 160 | 0.214 | 0 | | 320 | 0.597 | 0 | | 640 | 2.225 | 0 | | 1280 | 9.221 | 0 | | 2560 | 36.966 | 0 | And with disabled self-verification code: (setq org-element--cache-self-verify nil) | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.078 | 0 | | 20 | 0.075 | 0 | | 40 | 0.063 | 0 | | 80 | 0.085 | 0 | | 160 | 0.095 | 0 | | 320 | 0.178 | 0 | | 640 | 0.311 | 0 | | 1280 | 0.819 | 0 | | 2560 | 2.302 | 0 | | 5120 | 8.878 | 0 | | 10240 | 32.706 | 0 | Graphical comparison: --=-=-= Content-Type: image/png Content-Disposition: inline; filename=benchmark1.png Content-Transfer-Encoding: base64 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 --=-=-= Content-Type: text/plain There is ~80x improvement. However, the scaling is still not quite linear: --=-=-= Content-Type: image/png Content-Disposition: inline; filename=benchmark2.png Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAMAAAACDyzWAAABQVBMVEX///8AAACgoKD/AAAAwAAA gP/AAP8A7u7AQADIyABBaeH/wCAAgEDAgP8wYICLAABAgAD/gP9//9SlKir//wBA4NAAAAAaGhoz MzNNTU1mZmZ/f3+ZmZmzs7PAwMDMzMzl5eX////wMjKQ7pCt2ObwVfDg///u3YL/tsGv7u7/1wAA /wAAZAAA/38iiyIui1cAAP8AAIsZGXAAAIAAAM2HzusA////AP8AztH/FJP/f1DwgID/RQD6gHLp lnrw5oy9t2u4hgv19dyggCD/pQDugu6UANPdoN2QUEBVay+AFACAFBSAQBSAQICAYMCAYP+AgAD/ gED/oED/oGD/oHD/wMD//4D//8DNt57w//Cgts3B/8HNwLB8/0Cg/yC+vr6fn58fHx/f39+/v79f X18/Pz+ZMswfeLSy34ozoCz7mplMg1A+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nO2d CXakKhRAZR1ujjGV9P4X0DIpOJXIIOC75+T/dJWCldwwPmAYAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAgHfDkQEfXkLGaymRi1lScZJZCqYHPnvm8eqDOukdJzh97FEEJggsUMYYEdN/6OElqQUc 0UlmKZgeGB/nwFBo7vIHcJig/NiCB6YIeJDzn19qAS9feJfzB/7yaUPTk58m3GnARf1KKCeI4Okf eCRIUFVTklFWV+rnP+p3NfYf8v/yTXWp8sq7DE2vIU6dlwkWSEz1/bjcK1+Smcp/cXWVfZLlUbwM 5+TZlJJgy6vLfboK3n4SdZeSxU/623OoKpjqporzFMvHhiIwCiWgEJROleNAph81k68IwqZfgRFw RJhi23Tj0zt4ulT/f9SXjvJS77IlqfllIjjWJeB8r3pJXjkigSmf9LBPstxvM/STn9yerqPzu8t9 RsDNJ9EP7z3apefQbUA6QYTzaeaPHd6sBFyWSmn6Tv6IBy4Gqn7RVkD5K5rrTqMAVS+OyLnUu0wn Nb2/vEyI+Wa+V78kr6SIy/KJLc9kH8Vm6CdP1aV0eXe5zwi4+STLh13eu/IccydEejk/hZMu1MFR LAJOVYmpcM3PlGsB9e8D6x+z/eXML+pvOPEvM780Zt+XL6ucdKvJe0ldKX+f1P7iBR+cR1llaJIn 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 MurOwQAAAABJRU5ErkJggg== --=-=-= Content-Type: text/plain So, there is still some power-law nonlinearity in the tangle code. Benchmarking revealed the following: 8259 95% - org-babel-tangle-file 8259 95% - org-babel-tangle 8170 94% - org-babel-tangle-collect-blocks 3620 41% - org-in-archived-heading-p 3600 41% org-before-first-heading-p Showing that nonlinear scaling comes from regexp search. Caching org-before-first-heading-p improves the performance further (see Org 9.6-dev no self-verify + patch curves): | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.118 | 0 | | 20 | 0.106 | 0 | | 40 | 0.136 | 0 | | 80 | 0.157 | 0 | | 160 | 0.139 | 0 | | 320 | 0.212 | 0 | | 640 | 0.542 | 0 | | 1280 | 0.797 | 0 | | 2560 | 1.533 | 0 | | 5120 | 4.651 | 0 | | 10240 | 16.745 | 0 | The profiling gives: 16817 63% - org-babel-tangle-file 16280 61% - org-babel-tangle 16200 61% - org-babel-tangle-collect-blocks 1360 5% + org-babel-tangle-single-block 1210 4% + org-babel-get-src-block-info Most of the CPU time is spent in org-babel-tangle-collect-blocks, which is basically another regexp search for all the source blocks in buffer. The scaling is still slightly non-linear - maybe your source block regexp is too complex: (defvar org-babel-src-block-regexp (concat ;; (1) indentation (2) lang "^\\([ \t]*\\)#\\+begin_src[ \t]+\\([^ \f\t\n\r\v]+\\)[ \t]*" ;; (3) switches "\\([^\":\n]*\"[^\"\n*]*\"[^\":\n]*\\|[^\":\n]*\\)" ;; (4) header arguments "\\([^\n]*\\)\n" ;; (5) body "\\([^\000]*?\n\\)??[ \t]*#\\+end_src") "Regexp used to identify code blocks.") On the other hand, the test data is already within quite non-realistic over 5000 number of blocks. Probably, further performance improvement is not very useful (we already have some overheads at smaller N). Best, Ihor ----- The Org file used to generate plots: #+name: nocache | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.027 | 0 | | 20 | 0.049 | 0 | | 40 | 0.121 | 0 | | 80 | 0.391 | 0 | | 160 | 1.426 | 0 | | 320 | 6.765 | 0 | | 640 | 23.972 | 0 | #+name: cache | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.030 | 0 | | 20 | 0.067 | 0 | | 40 | 0.065 | 0 | | 80 | 0.081 | 0 | | 160 | 0.214 | 0 | | 320 | 0.597 | 0 | | 640 | 2.225 | 0 | | 1280 | 9.221 | 0 | | 2560 | 36.966 | 0 | #+name: cache-no-self | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.078 | 0 | | 20 | 0.075 | 0 | | 40 | 0.063 | 0 | | 80 | 0.085 | 0 | | 160 | 0.095 | 0 | | 320 | 0.178 | 0 | | 640 | 0.311 | 0 | | 1280 | 0.819 | 0 | | 2560 | 2.302 | 0 | | 5120 | 8.878 | 0 | | 10240 | 32.706 | 0 | #+name: cache-no-self+fix | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.118 | 0 | | 20 | 0.106 | 0 | | 40 | 0.136 | 0 | | 80 | 0.157 | 0 | | 160 | 0.139 | 0 | | 320 | 0.212 | 0 | | 640 | 0.542 | 0 | | 1280 | 0.797 | 0 | | 2560 | 1.533 | 0 | | 5120 | 4.651 | 0 | | 10240 | 16.745 | 0 | #+begin_src gnuplot :var d1=nocache :var d2=cache :var d3=cache-no-self :var d4=cache-no-self+fix :file benchmark1.png set title 'Tangle code performance timing' US='u 1:2 w lp ps 2' set xlabel "N blocks" set ylabel "Time, sec" set key top right plot d1 @US t'Org 9.5.2 stable', d2 @US t'Org 9.6-dev', d3 @US t'Org 9.6-dev no self-verify', d4 @US t'Org 9.6-dev no self-verify + patch' #+end_src #+RESULTS[edd2a2d5d80b31876917faee349ed71ba0fe239a]: [[file:/home/yantar92/.data/52/0930af-75ae-4d88-ae6a-d8dde39ecc72/benchmark1.png]] #+begin_src gnuplot :var d1=nocache :var d2=cache :var d3=cache-no-self :var d4=cache-no-self+fix :file benchmark2.png set title 'Tangle code performance scaling (normalized)' US='w lp ps 2' set xlabel "N blocks" set ylabel "Time, normalized by time at N=640" set key top left set xrange [0:6000] plot d2 u 1:($2/2.225) @US t'Org 9.6-dev', d3 u 1:($2/0.311) @US t'Org 9.6-dev no self-verify', d1 u 1:($2/23.972) @US t'Org 9.5.2 stable', d4 u 1:($2/0.542) @US t'Org 9.6-dev no self-verify + patch', x*x/870000 t'x^2', #+end_src #+RESULTS[b170ef78ac377f6d2ad1c2eabb20cd62dc0ea33f]: [[file:/home/yantar92/.data/52/0930af-75ae-4d88-ae6a-d8dde39ecc72/benchmark2.png]] --=-=-=--