From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id gMtoCuoy8WGc4wAAgWs5BA (envelope-from ) for ; Wed, 26 Jan 2022 12:39:22 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id SLpKA+oy8WGNvAAAG6o9tA (envelope-from ) for ; Wed, 26 Jan 2022 12:39:22 +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 31F1F2E335 for ; Wed, 26 Jan 2022 12:39:21 +0100 (CET) Received: from localhost ([::1]:58220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nCge0-0003wj-D2 for larch@yhetil.org; Wed, 26 Jan 2022 06:39:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nCgdZ-0003wb-41 for emacs-orgmode@gnu.org; Wed, 26 Jan 2022 06:38:53 -0500 Received: from [2a00:1450:4864:20::133] (port=38813 helo=mail-lf1-x133.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nCgdX-0003oE-F1 for emacs-orgmode@gnu.org; Wed, 26 Jan 2022 06:38:52 -0500 Received: by mail-lf1-x133.google.com with SMTP id bu18so62481524lfb.5 for ; Wed, 26 Jan 2022 03:38:51 -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=3gOKtuIiZQjc4sF4XZHepVWLEDMa+erDMQnKzDM1Ccg=; b=WvlsY5aQAjf9JoBH6FwVc6Opmube0/nZmj4EkBBB80Sdoer7azk9nUPikTcSjIwwHA 1h81eQRUcHTkNFNWNBG/sqhGhfxGvjCdvtwqZQf/nrNhbzfcL5ZVSdjxq+nG6F7B+Uf4 Xq3V5sFpSv/2mXgSjdqBLCyX0/xmRj4Y6oveaekvuVke6ymPxfCaZaGRDacbSOk5rRJt UO7namicrNmFIyUOu0qfD5nWt0o9rQG1m/8u/geUiFSuPrMR9A0h0OzMJJPvDYem/US5 u2quONuwo3k9uc/nKHwgNJNx5760f+PmEKyRPv3dQ+p++JaRVAhzr/XD9TTcapiSHeab kNFw== 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=3gOKtuIiZQjc4sF4XZHepVWLEDMa+erDMQnKzDM1Ccg=; b=3vBNKvrdFIVySg0ioqe5GKhvLBgrNitS2Ltmbz7ZODaTxY5mRe0Om6+ruSdXfkNBMi I1PFjBtODg9YKR6ahW3vkgvrub02Cdw6efqhydcQIQpnRGBtAjB+587i/JyLzvgqzTAw B1vbJMnNFbkdIWXlQf80dwmgjxKG113yI7iPVkEaUbLriPzcwDn87l44QfTj6I6WEIbM TXuHi+fZ1iKxPnJhzbExWN4OGJVFnG7jrVRWSkca1srZ9Gr4A5y5qfxFUPmjr2JFudHp /4e5fsR0JNLKY5LlowOuIveTo2bFzALD/0KgUSrfqTvZ4VF525V8FIH1M38eCiYRQRor 7eZg== X-Gm-Message-State: AOAM530LF47MEUSWb8GN3k2DYYxI6qJ8//pl7iJU7aB9ru6/e2WD19ZG ZztYLvq8Jfw+GBxrEBe+WcY= X-Google-Smtp-Source: ABdhPJwv+xGV2Fq29m2KbrXg/eeZiPI4E43c00Ti3nAtRIy8erKHXgY6oeePC212d5rua6VZBSZbOA== X-Received: by 2002:a05:6512:2303:: with SMTP id o3mr14852388lfu.622.1643197129437; Wed, 26 Jan 2022 03:38:49 -0800 (PST) Received: from localhost ([91.210.107.150]) by smtp.gmail.com with ESMTPSA id i8sm1799593lfu.115.2022.01.26.03.38.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Jan 2022 03:38:48 -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: <87k0enx5v6.fsf@localhost> References: <147178804.982080.1643087944384@ichabod.co-bxl> <87k0enx5v6.fsf@localhost> Date: Wed, 26 Jan 2022 19:43:15 +0800 Message-ID: <87sftalo30.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::133 (failed) Received-SPF: pass client-ip=2a00:1450:4864:20::133; envelope-from=yantar92@gmail.com; helo=mail-lf1-x133.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=1643197161; 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=3gOKtuIiZQjc4sF4XZHepVWLEDMa+erDMQnKzDM1Ccg=; b=chn8obcaPbojcSU31B5c4Fbi/22++vozYDR0jC1/zAoxDLmzox6roDz5idxeMpjESBwwoi OlaZ41ngQ9kviTyECQ2yRVzFeHWmeliIrxwbHMvZmYtXFkHGjBTzs6VQ+ttbVimSh2WzRJ yQzyA+WIO4nkZyDYmC5Xw733YCcKCnnsTxpne1nPUY9MniENa2TigF39UzGyrJxZTFVPnj l7DJhqW3LuYHrjD2cDOEgEaGVOoGCXOM084E1Lgzn9/cLb0fMBgctstvJPGcH8FRvE5WPo CmMwJsH7QQ5VsjyH6GFbuF0ElTWvH7ydFEv1hOrScsFhGZhuvHKNusvpqC8Qow== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1643197161; a=rsa-sha256; cv=none; b=aoSO7jWfLnkUxIcn0iV3iR2UTUjcIhM4QUuW7lojWTjpDJbs5N9Si6vcFaczM1yjlQA907 FeJtUxU97jP/yrFtHHo1Kfo+KmmUaoyHzOwj641y3uAC225U434di27ot/mdiCtHHAVwKD ZJiH5OAtB3+ITgqoJoxE0Mm/rhS5H+sVtc7NK0tE8q0Ov3GnkvMLge9Hv9RAAWphmydN/a 4Ycr+xZ/70jN3QrLk1f4If4FyBHA7HpqidG6uPNSFVLPGWQxmvQeIjV8oXpJzqVqUSJcB8 3rRejai/ju2OkOuYebPoOIveRjz5UoaZaMam2B6cc+SvuabnA0scYp2ZFkYpIA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=WvlsY5aQ; 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.63 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=WvlsY5aQ; 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: 31F1F2E335 X-Spam-Score: -5.63 X-Migadu-Scanner: scn0.migadu.com X-TUID: qwQ3XvUyAmZq --=-=-= Content-Type: text/plain Ihor Radchenko writes: > 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: After further investigation I found that it was not the problem with source block regexp. The code was doing an extra backward regexp search to find current headline. When there are no headlines in the Org file, that search created quadratic scaling. After caching the backwards search, the performance is further improved: | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.204 | 0 | | 20 | 0.047 | 0 | | 40 | 0.171 | 0 | | 80 | 0.063 | 0 | | 160 | 0.096 | 0 | | 320 | 0.155 | 0 | | 640 | 0.651 | 0 | | 1280 | 0.419 | 0 | | 2560 | 0.799 | 0 | | 5120 | 1.628 | 0 | | 10240 | 3.306 | 0 | | 20480 | 5.633 | 0 | | 40960 | 11.415 | 0 | 41k blocks in 12sec. Graphical comparison: --=-=-= Content-Type: image/png Content-Disposition: inline; filename=benchmark1.png Content-Transfer-Encoding: base64 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 rkJggg== --=-=-= Content-Type: text/plain The scaling becomes strictly linear after this fix: --=-=-= Content-Type: image/png Content-Disposition: inline; filename=benchmark2.png Content-Transfer-Encoding: base64 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 8j0gAAAAAElFTkSuQmCC --=-=-= Content-Type: text/plain Best, Ihor ----- Code used to generate the final set of the graphs: #+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 | #+name: cache-no-self+fix+fix2 | N blocks | runtime | # of GCs | |----------+---------+----------| | 10 | 0.204 | 0 | | 20 | 0.047 | 0 | | 40 | 0.171 | 0 | | 80 | 0.063 | 0 | | 160 | 0.096 | 0 | | 320 | 0.155 | 0 | | 640 | 0.651 | 0 | | 1280 | 0.419 | 0 | | 2560 | 0.799 | 0 | | 5120 | 1.628 | 0 | | 10240 | 3.306 | 0 | | 20480 | 5.633 | 0 | | 40960 | 11.415 | 0 | #+begin_src gnuplot :var d1=nocache :var d2=cache :var d3=cache-no-self :var d4=cache-no-self+fix :var d5=cache-no-self+fix+fix2 :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', d5 @US t'Org 9.6-dev no self-verify + 2xpatch' #+end_src #+RESULTS[e95dafc7253d218d2a9ed19caa75911660e72f77]: [[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 :var d5=cache-no-self+fix+fix2 :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 right set yrange [0:100] 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', d5 u 1:($2/0.651) @US t'Org 9.6-dev no self-verify + 2xpatch', x*x/870000 t'x^2', [0:10000] x*x/3500000 t'x^{2}', x/2400 t'x^{1}' #+end_src #+RESULTS[c69cdd0dfb08f37c73c6a202f415336155a390ab]: [[file:/home/yantar92/.data/52/0930af-75ae-4d88-ae6a-d8dde39ecc72/benchmark2.png]] --=-=-=--