Stories
Slash Boxes
Comments

SoylentNews is people

posted by LaminatorX on Sunday March 16 2014, @03:28AM   Printer-friendly
from the premature-optimization-is-the-root-of-all-evil dept.

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?"

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 2) by istartedi on Sunday March 16 2014, @06:03AM

    by istartedi (123) on Sunday March 16 2014, @06:03AM (#17103) Journal

    "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.
    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2  
  • (Score: 4, Informative) by c0lo on Sunday March 16 2014, @07:03AM

    by c0lo (156) Subscriber Badge on Sunday March 16 2014, @07:03AM (#17111) Journal

    "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.

    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/watch?v=aoFiw2jMy-0 https://soylentnews.org/~MichaelDavidCrawford
    • (Score: 1) by smaug9 on Sunday March 16 2014, @01:50PM

      by smaug9 (96) on Sunday March 16 2014, @01:50PM (#17173)

      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

    by jones_supa (554) on Sunday March 16 2014, @09:43AM (#17135)

    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

    by sorle (3778) on Sunday March 16 2014, @09:52AM (#17138)

    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.