Re: Reducing unncessary string copying
- From: Yasushi SHOJI <yashi atmark-techno com>
- To: gtk-devel-list gnome org
- Subject: Re: Reducing unncessary string copying
- Date: Wed, 22 Feb 2012 21:29:01 +0900
Hi Enrico,
At Mon, 20 Feb 2012 13:08:05 +0100,
Enrico Weigelt wrote:
[...]
> and the call now would be
>
> create_foo(G_CSTR_STATIC("hello world"));
>
> in case we dont have an "static" string, but something with
> limited lifetime, it could look like this:
>
> create_foo(G_CSTR_DYNAMIC(bar));
>
> Inside create_foo() we'll then replace g_strdup() by some
> G_CSTR_COPY() and g_free() by G_CSTR_FREE(). These functions
> will know whether the string has to be copied/free'd.
with all the complication above, what's the benefit of having
G_CSTR_STATIC compared to:
/* create_foo will hold the passing pointer. do not free() after
* you passed. just pass a literal string will do good.
*/
create_foo("hello world");
or
create_foo_with_literal_string("hello world");
or
#define G_CSTR_STATIC(x) x
:
create_foo(G_CSTR_STATIC("hello world"));
/* and remove all g_free() and g_strdup in create_foo() because
* create_foo will _not_ accept a pointer to dynamic memory
* location anyway.
*/
?
it sounds, at least to me, more like a convention than new APIs or a
new class. how many bytes or how many CPU clocks are we waisting in
real world application?
did you have a copy-on-write string class, like std::string in C++, in
your mind? having a copy-on-write string class in glib might be a
good idea.
I apologize in advance if I'm way off.
with all my respect,
--
yashi
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]