"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: -1, Troll) by Ethanol-fueled on Sunday March 16 2014, @03:56AM
We call those "const" in my hood, nigga.
(Score: 3, Informative) by ls671 on Sunday March 16 2014, @04:33AM
"const" don't have the copy on write feature. You can't even write them. So sorry, we are not talking about the same thing..
Everything I write is lies, read between the lines.
(Score: 1) by sjames on Sunday March 16 2014, @06:32AM
Not the same thing at all. Const can't be assigned at all (other than the initial assignment). Thi is entiorely different. There is a string pool containing one and only one copy of every string assigned anywhere. If you have char *a="hello " and char *b="there" and char *c = "hello there!", there will be 3 strings stored. If you concatenate a and b assigned to char *d, d will point to the same instance of "hello there" as c does (and it's reference count will be incremented).
Unlike a const, you can then do d = "Never Mind".
(Score: 0) by Anonymous Coward on Sunday March 16 2014, @03:32PM
You mean whenever I change a string in Java, the JVM runs through ALL my strings in memory to make sure I don't have a duplicate string already? and there's no opting out??
Yikes, that sounds like a huge waste of CPU cycles. I'll happily trade memory to get that performance back, thanks.
(Score: 1) by sjames on Sunday March 16 2014, @08:44PM
It's done with hashes.