On Mon, 2 Dec 2002, Francois Gouget wrote:
Other observations:
- my naive strcpy/strcat implementation seems more efficient than the
one in the glibc! That's pretty weird.
If you have glibc from binary package compiled with optimizations for other processor that you have, it is possible.
- cpycat is much more efficient in this type of scenario. That's not
very surprising of course. Why does the C library have such braindead functions as strcpy and strcat?
Since we are talking about catenating strings only (no %d and family), then I would suggest combining speed of cpycat (in glibc there's stpcpy) and ease of use of sprintf and use something like that:
#include <stdarg.h> char *strpcpymore(char *buf, ...) { const char *p; va_list ap;
va_start(ap, buf); while ((p = va_arg(ap, const char *))) buf = stpcpy(buf, p); va_end(ap); return buf; }
Then we could write:
strpcpymore(buffer, "path", "/", "file", ".", "ext", NULL);
And make everybody happy.
Michal Miroslaw