git: af366d353b84 - main - amd64: implement strlen in assembly
Jessica Clarke
jrtc27 at freebsd.org
Mon Feb 8 23:19:04 UTC 2021
> On 8 Feb 2021, at 23:13, Kevin Bowling <kevin.bowling at kev009.com> wrote:
>
> FreeBSD does not require pre-commit approval unless called out
> specifically. Are you volunteering to review the changes, and if so
> where is your guidance? These messages are otherwise unhelpful.
It is not a hard requirement, but it is strongly encouraged. Section 7
of the committer's guide says:
• All non-trivial changes should be reviewed before they are
committed to the repository.
This was a non-trivial change. I was particularly frustrated to see
this commit go in without review having previously called out mjg@ for
not getting any reviews for his (now reverted) previous strlen change.
Jess
> On Mon, Feb 8, 2021 at 12:37 PM Jessica Clarke <jrtc27 at freebsd.org> wrote:
>>
>> On 8 Feb 2021, at 19:15, Mateusz Guzik <mjg at FreeBSD.org> wrote:
>>>
>>> The branch main has been updated by mjg:
>>>
>>> URL: https://cgit.FreeBSD.org/src/commit/?id=af366d353b84bdc4e730f0fc563853abc338271c
>>>
>>> commit af366d353b84bdc4e730f0fc563853abc338271c
>>> Author: Mateusz Guzik <mjg at FreeBSD.org>
>>> AuthorDate: 2021-02-08 17:01:48 +0000
>>> Commit: Mateusz Guzik <mjg at FreeBSD.org>
>>> CommitDate: 2021-02-08 19:15:21 +0000
>>>
>>> amd64: implement strlen in assembly
>>>
>>> The C variant in libkern performs excessive branching to find the
>>> non-zero byte instead of using the bsfq instruction. The same code
>>> patched to use it is still slower than the routine implemented here
>>> as the compiler keeps neglecting to perform certain optimizations
>>> (like using leaq).
>>>
>>> On top of that the routine can is a starting point for copyinstr
>>> which operates on words instead of bytes.
>>>
>>> Tested with glibc test suite.
>>>
>>> Sample results (calls/s):
>>>
>>> Haswell:
>>> $(perl -e "print 'A' x 3"):
>>> stock: 211198039
>>> patched:338626619
>>> asm: 465609618
>>>
>>> $(perl -e "print 'A' x 100"):
>>> stock: 83151997
>>> patched: 98285919
>>> asm: 120719888
>>>
>>> AMD EPYC 7R32:
>>> $(perl -e "print 'A' x 3"):
>>> stock: 282523617
>>> asm: 491498172
>>>
>>> $(perl -e "print 'A' x 100"):
>>> stock: 114857172
>>> asm: 112082057
>>
>> No Reviewed by? More than one pair of eyes on non-trivial assembly is
>> almost always a good idea.
>>
>> Jess
>>
>> _______________________________________________
>> dev-commits-src-main at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
>> To unsubscribe, send any mail to "dev-commits-src-main-unsubscribe at freebsd.org"
More information about the dev-commits-src-all
mailing list