Re: Newby C++ vs. C question
On Jul 31, 4:49 pm, alexrixhard...@yahoo.com wrote:
I am a newby in the C/C++ world, and I am beginning to work on a
rather simple TCP/IP proxy application which must be able to handle
large volume of data as quickly as possible.
That sounds like a contradiction to me. A TCP/IP proxy
application requires an expert. (And some other people, of
course. Even in the most critical applications, a good deal of
the work can be done by people who are average, or even less.)
Since this application has to process and distribute plain text around
the network, I am wondering if there are any peformance differences
between C++ std::string and C char in run time?
Obviously. They do different things, and when you do different
things, there will be differences in runtime. If you use them
to do the same thing, performance should be similar.
Which one would you suggest me to use for my particular task (TCP/IP
proxy which is distributing plain text around the nextwork that
is :-) )?
std::string, until the profiler says differently.
p.s.: here're two examples that I found on the Internet for which I am
wondering if there are any performance differences between them:
C function returning a copy
char *fnConvert(int _ii)
char *str = malloc(10); /* Return 10 character string */
if(str == NULL)
fprintf(stderr,"Error: Memory allocation failed.\n");
sprintf(str, "%d", _ii);
C++ function returning a copy
string fnConvert(int _ii)
ost << _ii;
I don't know about performance, but I do know that they do
radically different things. The first one core dumps for some
input, at least on my machine, and the second one doesn't. And
even when the first one doesn't core dump, it leaks memory; call
it often enough, and you're run out of memory.
As I said, C style strings and std::string do different things.
James Kanze (Gabi Software) email: firstname.lastname@example.org
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34