memrchr() implementation

3 messages, 3 authors, 2016-06-15 · open the first message on its own page

memrchr() implementation

From: Tay Ray Chuan <hidden>
Date: 2016-06-15 22:51:41

Hi,

I'm writing a patch that requires the use of memrchr(). [1] As far as
I know, memrchr() is non-standard.

So what's the best way to get git to use memrchr()?

I was thinking of getting git to use glibc's implementation if glibc
is present, if not, use a naive implementation included in git's code
base [2].

--
Footnotes:
[1] For those interested, it's regarding content trimming to speed out
diffs. You can see memrchr() in use at
https://github.com/rctay/git/blob/tg%2Fgsoc-diff%2Ftrim-ends/xdiff/xprepare.c#L203

[2] (ISC-style license)
http://www.sudo.ws/repos/sudo/file/c1ab4b940980/compat/memrchr.c

-- 
Cheers,
Ray Chuan

Re: memrchr() implementation

From: Jeff King <hidden>
Date: 2016-06-15 22:51:41

On Fri, Jul 29, 2011 at 12:33:01PM +0800, Tay Ray Chuan wrote:
I'm writing a patch that requires the use of memrchr(). [1] As far as
I know, memrchr() is non-standard.
Yep.
So what's the best way to get git to use memrchr()?

I was thinking of getting git to use glibc's implementation if glibc
is present, if not, use a naive implementation included in git's code
base [2].
Yeah, that's our usual strategy; see how strchrnul is implemented for an
example.

Since you are doing this for speed and not ease-of-use, I assume you are
benchmarking stock git versus glibc's optimized memrchr. I'd be curious
to see a comparison to your naive implementation, too, just to
double-check that your attempt at speeding up doesn't make things worse
on non-glibc platforms.

-Peff

Re: memrchr() implementation

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:51:41

Hi,

Tay Ray Chuan wrote:
So what's the best way to get git to use memrchr()?
In my very humble opinion: [1].
I was thinking of getting git to use glibc's implementation if glibc
is present, if not, use a naive implementation included in git's code
base [2].
Sounds reasonable.
[2] (ISC-style license)
http://www.sudo.ws/repos/sudo/file/c1ab4b940980/compat/memrchr.c
For something simple as this, I'd prefer to avoid a differently
licensed (even ISC-licensed) file.

It might also be worth convincing the folks at
http://austingroupbugs.net/ to standardize the interface so there
could be optimized implementations of memrchr on more platforms over
time.

Thanks,
Jonathan

[1] http://thread.gmane.org/gmane.comp.version-control.git/159081/focus=159121
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help