Christian Couder <christian.couder@xxxxxxxxx> 于2021年8月11日周三 下午4:20写道: > > On Wed, Aug 11, 2021 at 5:47 AM ZheNing Hu <adlternative@xxxxxxxxx> wrote: > > > > ZheNing Hu <adlternative@xxxxxxxxx> 于2021年8月10日周二 下午10:20写道: > > > > I think find_subpos() called by grab_sub_body_contents() and find_wholine() > > > called by grab_person() are evidences that we are repeating iteratively. > > > But the proportion of time they occupy is too small. 0.0142% and 0.0109% > > > > > > > Using such a method may reduce some unnecessary scans [1] > > But it can do very little optimization... 1.6%. > > On the other hand, our optimization should focus on the default format of > > `git cat-file --batch`. > > > > My new idea is to need a fast path: when we use the default format, > > let us directly execute get_object() to avoid unnecessary traversal > > and checking. > > I think it should be done not only when we use the default format but > when we use any format that only needs the metadata provided by > get_object(). This way that wouldn't be a special case fast path, but > rather a generally useful optimization. Sorry, the reply is a bit late. These two days have been busy implementing more valuable performance optimization patches. I finally did not implement the above plan. At present, ref-filter does have some small areas worth optimizing. A large part of the remaining performance loss comes from more allocated memory and more copying. We must bear a certain gap in performance. But we can minimize it as much as possible. This is perhaps the most reasonable at present. Let’s forget about the previous commit-slab for now and take a look at my new optimization these two days: https://lore.kernel.org/git/pull.1016.git.1628842990.gitgitgadget@xxxxxxxxx/ Thanks. -- ZheNing Hu