4 ms·
(you had me questioning my sanity for a moment there) short answer: I did. It got slower! They're not doing what you think they are. Each string only gets mea
by sambeau 15y ago
(you had me questioning my sanity for a moment there)
short answer: I did. It got slower!
They're not doing what you think they are. Each string only gets measured twice.
To factor them out I will need to start allocating extra arrays just to keep their values: the extra malloc and free is slower than measuring the strings twice. I also tried a Reallocing version that didn't need them but it was twice as slow.
I use this code for composing text in places where speed isn't my first concern; especially error messages. But its plenty fast enough for 90% of what anyone would need. You'd rarely be concating more than 6 things together.
note: it's really hard to talk about pointers on HN as you can't type an asterisk without a code block, but it's:
while(s != 0)
not
while(*s != 0)
- apaprocki 15y agoIf you're talking about inputs that aren't arbitrarily huge, you should try measuring performance using alloca instead of malloc.
- abecedarius 15y agoIt's the second strlen plus the memcpy right after it that I would consider replacing (with a loop that fuses both). (Though since you say it doesn't matter, never mind...)