From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#42966: 28.0.50; vc-dir: wrong backend Date: Sat, 17 Oct 2020 09:02:26 +0200 Message-ID: <87a6wlz665.fsf@gnus.org> References: <87d01imtwl.fsf@gnus.org> <3708c3db-df78-1a50-857a-595f2412e284@yandex.ru> <87v9fa44im.fsf@gnus.org> <1e9908c7-337d-9790-cd37-5232bc04233c@yandex.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28566"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Sam Steingold , 42966@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Oct 17 09:03:15 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kTgFH-0007KB-F8 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 17 Oct 2020 09:03:15 +0200 Original-Received: from localhost ([::1]:34580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kTgFG-0001UC-Ae for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 17 Oct 2020 03:03:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35760) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kTgF4-0001U3-OC for bug-gnu-emacs@gnu.org; Sat, 17 Oct 2020 03:03:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49801) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kTgF4-0000dk-EO for bug-gnu-emacs@gnu.org; Sat, 17 Oct 2020 03:03:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kTgF4-0004VD-Ab for bug-gnu-emacs@gnu.org; Sat, 17 Oct 2020 03:03:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 17 Oct 2020 07:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 42966 X-GNU-PR-Package: emacs Original-Received: via spool by 42966-submit@debbugs.gnu.org id=B42966.160291815917277 (code B ref 42966); Sat, 17 Oct 2020 07:03:02 +0000 Original-Received: (at 42966) by debbugs.gnu.org; 17 Oct 2020 07:02:39 +0000 Original-Received: from localhost ([127.0.0.1]:33114 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kTgEh-0004Ub-Fh for submit@debbugs.gnu.org; Sat, 17 Oct 2020 03:02:39 -0400 Original-Received: from quimby.gnus.org ([95.216.78.240]:36224) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kTgEf-0004UO-CT for 42966@debbugs.gnu.org; Sat, 17 Oct 2020 03:02:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=pDm6fWrDnSu28Vpua46JeDiw4LXKPH3NUJoGfWpGybk=; b=IW8fBGM8QqP9VcX1jMS00xiu6f Y4jLChIxA5LrJWoXkp0Fa7wySFgwOYiFIs88CBSOZa4Kuh6LA/BSZpiNmaX8TDvS0okgIIPE0/u+4 Z9dNLmBs/SRZzm5RWxXzaQlGBHrVGmdki0RZUQRGzyXltr1gBFWbQiaN+v9gqcnTwbTo=; Original-Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kTgEW-0000P0-Ax; Sat, 17 Oct 2020 09:02:31 +0200 Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAKlBMVEVUUE1hXVjNybjb 2MWJhXuoo5Xu7Nb9/etEQD/BvKtva2aCfnVBPT3///+oZfybAAAAAWJLR0QN9rRh9QAAAAd0SU1F B+QKEQYQIJY1lUQAAADySURBVDjLY2BAAEYBRgZBIA2kwDSylCAQgEh0CbAMWBZdAiwmgEUCohqL BANOCUaSJYCewSEBk8IiIcCIQwJiE3YJbP6A6GCESygpO4CosDRFqGEwifTyCCDJWl5ehGaEWnkA kGQuDysTQJXghOpQq2RAlwjgCg3hSi8vwZRgLa9kLncuX4ApUVYqXr643AFVohNouaAgU3k5uuWs aSBXMU5L00LzBzyQGIgEHLgkRJcuEQllCQkNcQ3dgCKxLFxp0aQmI6VMtWkBKBKLZwpNDT2qqaka FIQqAXSdAJAAJmdGhlEwtAAsXwsgmAsFV61aBQBdBy4XxoN/QAAAACV0RVh0ZGF0ZTpjcmVhdGUA MjAyMC0xMC0xN1QwNjoxNjozMiswMDowMGbBCBIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMTAt MTdUMDY6MTY6MzIrMDA6MDAXnLCuAAAAAElFTkSuQmCC X-Now-Playing: Various's _1-8 Split Series_: "The Third Eye Foundation - There's No End In Sight" In-Reply-To: <1e9908c7-337d-9790-cd37-5232bc04233c@yandex.ru> (Dmitry Gutov's message of "Fri, 16 Oct 2020 17:44:20 +0300") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:190757 Archived-At: --=-=-= Content-Type: text/plain Dmitry Gutov writes: > Let's measure it anyway, because the potential impact is big (an extra > delay when opening any file). Sure. I've set up a directory structure with a hg repo inside a git repo (tar file included as an attachment). Here's the benchmarks on a local machine and a remote machine with the current code: (benchmark-run 1000 (vc-responsible-backend "/tmp/git-dir/dir1/dir2/hg-dir/bar")) (0.47081299800000004 10 0.07627535899999999) (benchmark-run 100 (vc-responsible-backend "/ssh:stories:/tmp/git-dir/dir1/dir2/hg-dir/bar")) (2.8259669379999997 99 0.912024865) Benchmarking for the rewritten code to follow, once I've rewritten it. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no --=-=-= Content-Type: application/x-gtar-compressed Content-Disposition: attachment; filename=vc-test.tgz Content-Transfer-Encoding: base64 H4sIAAAAAAAAA+w9TW8bSXaanQADNoIAOSRADgFqWsxQlNn80teEMrXjlT1jLTy2Y0njAJataXYX yR43u+mupmTa1gS5ZIEghwDZSw4BckjOg/0DewkWyJ5yyi0/IECAIDnkGCTvo7rZ/NDXWNZkMizA Itld9erVe6/eV71ud7zYcr2osvAOWxXaxtoaftY21qrZz6Qt1FY2VutrtZUa9qvVVldqC2LtXSKV tIGK7UiIBd+OlHdGv/Puf09bR/O/DF/elRBcgv/1leoK8L9eX1+d8/862hj//bCj3oEQXJ7/K/A5 5/91tGn+R7J9xUJwef6v1tY35vy/jnYK/7vSdq9MCi7P/7X62sqc/9fRzuR/z1axjN56DmTw+urq qfyvr2xM8H99dQP4X72C9Z3bfuD8r16wiaqsOvZavWbXnLWP1+SK8/HHq7XV1XV7Za1da7dqGx87 q+C3S3EPCCV2go5sRV4nVjIQN4l2n3SCgSqHUWdL1Nar9T8EEdioiRvVerWac8Jez4vFkhd4sWf7 xYbYpivGd02e//dtev/fvXPr9tXOcfn9v7K+tj7f/9fR5vv/h93G9n8rsgOnK686BryM/1dfx/zP anV9Hv9dSxvjvxe48uXVz3Gu/q/VJvX/Sq061//X0W7vPNqGjx/Bv/cO//znvxS13/4m+Vx47/0f vfeXH/zZwsKf/t3Cwvv/yv8WfuMP3vzKLf3ib/f+4y/+8cfWz7e++O+tX/71wvuvwljD3Ht05w58 /N5CTVSNf/rgm1d/v/9bv/rZNz979ie//od//6/f/Zt+/MHNv/q3L/75N997svTTf7n5P7/zR7// n7/4zijww25j+78bhs/fQQLw8vp/ZbW2Ptf/19Fm8L8fSas/UN2ysnt9X779HOfwv75WXZ3g//rK xlz/X0tb/LDS8oKK6hrGorgVCPmSmC5QFIRyIq8fizgURzLy2kNx3LVj4Slht8IBXW9JgaIi3bIQ 27bvS1e0hsIEYQJweMcUdjuWkQDvvmsrAd6l8xw6xV0pItkLYymA/vFAlUQLILZkO4yksINh3PWC Dg1pSRloYDTNThtGAw4aOfnSi5U49uKusEUQBtYrGYUaKPxmOMee72dwNRYB4B4CoWXCp8O4ExjE rR36fniMQ/t2ZPckLEE1aFi+JixL3IdrImxn1wHUOO56Do/HiRBuSyIMNwwkDq3j0P1H987vC71h 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 hkk80iB5go8megFGXyGAV3A7go06yIUeHCcWKc2xF2y28fLo9eKdMYc7I2zoAl9bRSN82Ud/jBQC h4tCTap/i/bQHS8G/L8iney3H3jT2y8+8sa5tcH3eA4//9kwnMT5z0VLnf+VDXZ4EvSiu6GwIAzw Py8pNvcToNP2f41Y/Vdx/rtDbHX+cxYYSX/TnusUmIb+puOA/Ce2on8mOIz+jufZpaLpVYlr2MW6 Ufa8slU3a5WiRe1SvWbRKq1UJmsDCFwct/6b1iD/m7glrNb/DHBw6i2f/9ylhw33wRe/+J07ll71 6OkLi+6SQoYYyf9efWHyX+r/hpL/meAw+huOW3dc17Ztg3p2mf1Wdmzq1L2KZ1Fat0mpUnMmFNCp 8r9kJOV/yVTyPxMcnLp3880XHzVKNaMIpbh/568+v+W+7W8qH/j4J586/9n3fuTu//nXR77/wk+/ 9V8fXF763z/55f9cdH8V5ouR/A/ZunNcAabS/zH+r1gC/U/J/+PHSPpDcc0F0992FP2zwEj6G3TR +p9pEkX/LHAY/Q3PtU3iEqb72dTyyuUis8lLrmXXSb1KnLJXJKQ4YWR4mv5HYvWfhf5HHEfpf1ng 4NSH//S89oLxK0vb33nVjdfUHvlm+/TK768/f+nf+nefLr1n7SfPfezSD8qnP/3gO1/66vPmr7/7 0TuXP3v/3/34gT888w+vfNf7n/2DcuUTd/39J29Yv/bcjy799Q/++x+fX33jza/96o2vvPJ9L7/t e6/+4dcf+svP3PuNe9adu1r/8Ud3f/zPfvLNHz33rW//+Nv/t9T7cuXLi355hUH+5xE9c28jbf+P WIn6z+yLkqr/nAkue36XXoFcWpmsCsdauL192oUj4/VtHk3bont+Dc6zxlMllqsQNbENJ4JAjG3L b7itFgQSYNJpIC9b9LsppGOA/2MVMebZRir/E5LU/21L+X8ywXDJlPtkRTyZ+7gemxbrmP8gD7OJ VVFQzH5rYoD/52z3S0xv/1vsX2X/ZYFh+tMDLPk/xzbS5L9VGvb/GEr/ywS82H0rwDJQUOKepzSy H8Q8yEOY8/bQ9NBW9bfCWabDFb1X1zGmVhzigAXC3+BDAUFRrkvf8wPIuGi29Z1cIh+XR6xCaT9+ lgIcTejXsTQAtgrR3z3abQf6Rj9+VO5e8uQ2CGmF7zfPspvPFC777hX44ffUMpXAAP9jFuz825hF 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 --=-=-=--