{"thread":{"id":"62471","subject":"Extremely long subtree split duration","startedAt":"2024-11-08T21:40:20Z","lastAt":"2024-11-29T19:51:17Z","messageCount":6,"participants":["Peter Kassak","Kristoffer Haugsbakk"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"506886","messageId":"CADYnh+Fudpy9kfg8npUMutMjzYNDy-XxJCCJ_9O4kLoB807_3Q@mail.gmail.com","threadId":"62471","inReplyTo":null,"subject":"Extremely long subtree split duration","fromName":"Peter Kassak","fromEmail":"cache.sk@gmail.com","sentAt":"2024-11-08T21:40:08Z","receivedAt":"2024-11-08T21:40:20Z","isPatch":false,"sender":{"key":"cache.sk@gmail.com","avatar":null},"body":"Windows has always been a bit slower with subtree split, but now we\nencountered an extreme difference.\n\nThe test is on the opensource repository of bitnami charts:\n\ngit clone https://github.com/bitnami/charts.git\ncd charts\ngit subtree split -P bitnami/minio -b split\n\nOn live Ubuntu 24.04 booted from usb stick, it took about one and a\nhalf minutes.\n\nOn Windows 11 installed on internal nvme, it took almost 4 hours.\n\nYes, it sounds crazy, but it really took three hours and 53 minutes on\nthe same hardware.\n\nMain difference (except OS) is git version. On Ubuntu is latest\ninstalled via apt 2.43.0, on Windows is 2.47.0.windows.2.\n\nI have tried several different OS in docker, virtualbox, different HW,\ndifferent git versions..\n\nLong story short, it looks like since version 2.44.0-rc0, probably\nafter merging 'zf/subtree-split-fix', subtree split is much much\nslower.\n\nAnd practically unusable on Windows.\n\nCan this be fixed?\n\nThanks, Peter \"Cache\" Kassak\n"},{"id":"506887","messageId":"bc028fc5-c0e3-4d31-9790-86bdd3911cc5@app.fastmail.com","threadId":"62471","inReplyTo":"CADYnh+Fudpy9kfg8npUMutMjzYNDy-XxJCCJ_9O4kLoB807_3Q@mail.gmail.com","subject":"Re: Extremely long subtree split duration","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2024-11-08T22:07:55Z","receivedAt":"2024-11-08T22:08:16Z","isPatch":false,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"On Fri, Nov 8, 2024, at 22:40, Peter Kassak wrote:\n> Main difference (except OS) is git version. On Ubuntu is latest\n> installed via apt 2.43.0, on Windows is 2.47.0.windows.2.\n\nI tried a bit on Ubuntu 22.04, Git 2.47.0.  I gave it 14 minutes and then\nit was apparently about 10000/32714 done.\n\n-- \nKristoffer Haugsbakk\n"},{"id":"506905","messageId":"447bb623-28be-4667-b571-935ff7d163d0@app.fastmail.com","threadId":"62471","inReplyTo":"bc028fc5-c0e3-4d31-9790-86bdd3911cc5@app.fastmail.com","subject":"Re: Extremely long subtree split duration","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2024-11-09T14:27:42Z","receivedAt":"2024-11-09T14:28:05Z","isPatch":false,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"On Fri, Nov 8, 2024, at 23:07, Kristoffer Haugsbakk wrote:\n> On Fri, Nov 8, 2024, at 22:40, Peter Kassak wrote:\n>> Main difference (except OS) is git version. On Ubuntu is latest\n>> installed via apt 2.43.0, on Windows is 2.47.0.windows.2.\n>\n> I tried a bit on Ubuntu 22.04, Git 2.47.0.  I gave it 14 minutes and then\n> it was apparently about 10000/32714 done.\n>\n> --\n> Kristoffer Haugsbakk\n\nI tried again and ran the whole command.  It took 3 hours and 43\nminutes.  My `/bin/sh` is dash(1).\n\nI then checked out the first parent of the commit that you pointed to:\nbcf524023e (Merge branch 'zf/subtree-split-fix', 2024-02-02).  In other\nwords I checked out bbc8c05670 (Merge branch 'jc/ls-files-doc-update',\n2024-02-02).\n\nA *split* on that took 3m49s.\n\n-- \nKristoffer Haugsbakk\n"},{"id":"506924","messageId":"CADYnh+EUNUaTDB9uLSgZkvWGHrpqrrO4XMrjmHzdH-6WXqZLqQ@mail.gmail.com","threadId":"62471","inReplyTo":"447bb623-28be-4667-b571-935ff7d163d0@app.fastmail.com","subject":"Re: Extremely long subtree split duration","fromName":"Peter Kassak","fromEmail":"cache.sk@gmail.com","sentAt":"2024-11-09T21:10:59Z","receivedAt":"2024-11-09T21:11:10Z","isPatch":false,"sender":{"key":"cache.sk@gmail.com","avatar":null},"body":"Hello,\n\nI didn't compile my own version from sources, I wrote that it was\nprobably after 'zf/subtree-split-fix', because it was related to\nsubtree split.\n\nAnd I managed to find out by trying that the change happened after\nversion 2.43.0 and was included in version 2.44.0-rc0, so i assumed\nthat.\n\nGo on and try same split with 2.43.0.\n\nPeter \"Cache\" Kassak.\n\nOn Sat, Nov 9, 2024 at 3:28 PM Kristoffer Haugsbakk\n<kristofferhaugsbakk@fastmail.com> wrote:\n>\n> On Fri, Nov 8, 2024, at 23:07, Kristoffer Haugsbakk wrote:\n> > On Fri, Nov 8, 2024, at 22:40, Peter Kassak wrote:\n> >> Main difference (except OS) is git version. On Ubuntu is latest\n> >> installed via apt 2.43.0, on Windows is 2.47.0.windows.2.\n> >\n> > I tried a bit on Ubuntu 22.04, Git 2.47.0.  I gave it 14 minutes and then\n> > it was apparently about 10000/32714 done.\n> >\n> > --\n> > Kristoffer Haugsbakk\n>\n> I tried again and ran the whole command.  It took 3 hours and 43\n> minutes.  My `/bin/sh` is dash(1).\n>\n> I then checked out the first parent of the commit that you pointed to:\n> bcf524023e (Merge branch 'zf/subtree-split-fix', 2024-02-02).  In other\n> words I checked out bbc8c05670 (Merge branch 'jc/ls-files-doc-update',\n> 2024-02-02).\n>\n> A *split* on that took 3m49s.\n>\n> --\n> Kristoffer Haugsbakk\n"},{"id":"508344","messageId":"1c026a82-d24b-48f0-8206-47c2eeed1442@app.fastmail.com","threadId":"62471","inReplyTo":"CADYnh+EUNUaTDB9uLSgZkvWGHrpqrrO4XMrjmHzdH-6WXqZLqQ@mail.gmail.com","subject":"Re: Extremely long subtree split duration","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2024-11-29T19:44:40Z","receivedAt":"2024-11-29T19:45:43Z","isPatch":false,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"Hi again\n\nOn Sat, Nov 9, 2024, at 22:10, Peter Kassak wrote:\n> Hello,\n>\n> I didn't compile my own version from sources, I wrote that it was\n> probably after 'zf/subtree-split-fix', because it was related to\n> subtree split.\n>\n> And I managed to find out by trying that the change happened after\n> version 2.43.0 and was included in version 2.44.0-rc0, so i assumed\n> that.\n>\n> Go on and try same split with 2.43.0.\n>\n> Peter \"Cache\" Kassak.\n\nBack when I read this I thought I checked these.  So I didn’t do\nanything more.\n\nI just came back to this since I found this project idea about\nrewriting this contrib/ script in C (make it a builtin):\n\nhttps://github.com/gitgitgadget/git/issues/1410\n\nI’ll link this thread on that issue.\n\n-- \nKristoffer Haugsbakk\n"},{"id":"508345","messageId":"1b5f05ce-6e91-4f90-b3ff-f7cedfa32586@app.fastmail.com","threadId":"62471","inReplyTo":"1c026a82-d24b-48f0-8206-47c2eeed1442@app.fastmail.com","subject":"Re: Extremely long subtree split duration","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2024-11-29T19:50:55Z","receivedAt":"2024-11-29T19:51:17Z","isPatch":false,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"I don’t use this command and I am an outsider to the code (to all of the\ncode in this project).  But the commit that introduced this apparent\nperformance regression does a lot of `git log -1` calls. Very apparent\nwhen I ran it since I got a lot of stderr output about missing note refs\n(since I use them in another project).\n\nFor what it’s worth.\n"}]}