Subsentient writes:
"I've been writing C for quite some time, but I never followed good conventions I'm afraid, and I never payed much attention to the optimization tricks of the higher C programmers. Sure, I use const when I can, I use the pointer methods for manual string copying, I even use register for all the good that does with modern compilers, but now, I'm trying to write a C-string handling library for personal use, but I need speed, and I really don't want to use inline ASM. So, I am wondering, what would other Soylenters do to write efficient, pure, standards-compliant C?"
(Score: 2) by istartedi on Sunday March 16 2014, @06:03AM
"Steal" in quotes of course. For string libraries? I'd seek out the best Free/Open source or find out what happens when I link against a black-box proprietary lib. The odds that I'll come up with something better are low. I say this as somebody who has been writing C since the late 90s. Some of it was professional work that earned good marks for speed. None of it used assembly. It hit the bit bucket before it needed to run any faster. I read a book by John Abrash (worked for Id Software) and it had a lot interesting things about how he beat the standard library--with assembly. As some of the others mentioned, you might find some older libraries that aren't using the new restrict keyword and thus don't run as fast as they could. AFAIK, the GNU stuff uses it now. IMHO, you won't beat any of it without assembly.
For something less well known than a string library, it could be an entirely different story. There are probably still a lot of projects that haven't been taken to the limit. Performance is also subjective in some ways (e.g., latency or throughput?).
Appended to the end of comments you post. Max: 120 chars.
(Score: 4, Informative) by c0lo on Sunday March 16 2014, @07:03AM
a comparison [sourceforge.net] between string libraries.
bstring seems to be GPL/BSD double licensed, you'd be able to fork under whichever you like.
https://www.youtube.com/@ProfSteveKeen https://soylentnews.org/~MichaelDavidCrawford
(Score: 1) by smaug9 on Sunday March 16 2014, @01:50PM
Yeah, bstr is nice. Better to not fork. Wrap it in the interface you like, but leave the library itself alone. Maybe writing the one or two missing features you are looking for, but otherwise reusing existing work.
(Score: 3, Informative) by jones_supa on Sunday March 16 2014, @09:43AM
I read a book by John Abrash (worked for Id Software) and it had a lot interesting things about how he beat the standard library--with assembly.
Michael Abrash's Graphics Programming Black Book.
(Score: 2, Informative) by sorle on Sunday March 16 2014, @09:52AM
That would be **Mike** Abrash, optimization guru, and his black book is legendary. He's doing virtual reality work at Valve now, still pushing the limits of real-time performance.