All of lore.kernel.org
 help / color / mirror / Atom feed
* memrchr() implementation
@ 2011-07-29  4:33 Tay Ray Chuan
  2011-07-29  4:40 ` Jeff King
  2011-07-29  4:47 ` Jonathan Nieder
  0 siblings, 2 replies; 3+ messages in thread
From: Tay Ray Chuan @ 2011-07-29  4:33 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Junio C Hamano, Jeff King, Jonathan Nieder

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: memrchr() implementation
  2011-07-29  4:33 memrchr() implementation Tay Ray Chuan
@ 2011-07-29  4:40 ` Jeff King
  2011-07-29  4:47 ` Jonathan Nieder
  1 sibling, 0 replies; 3+ messages in thread
From: Jeff King @ 2011-07-29  4:40 UTC (permalink / raw)
  To: Tay Ray Chuan; +Cc: Git Mailing List, Junio C Hamano, Jonathan Nieder

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: memrchr() implementation
  2011-07-29  4:33 memrchr() implementation Tay Ray Chuan
  2011-07-29  4:40 ` Jeff King
@ 2011-07-29  4:47 ` Jonathan Nieder
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan Nieder @ 2011-07-29  4:47 UTC (permalink / raw)
  To: Tay Ray Chuan; +Cc: Git Mailing List, Junio C Hamano, Jeff King

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-29  4:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-29  4:33 memrchr() implementation Tay Ray Chuan
2011-07-29  4:40 ` Jeff King
2011-07-29  4:47 ` Jonathan Nieder

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.