Hi Vivien,
while trying to optimize the speed of some queries I came on g_value_set_static_string (), which is good and faster than its brother g_value_set_str (). I was wondering if it was possibile to add a gda_holder_set_value_static_str ()? Another question, always in that fashion: gda_holder_take_value () takes as input a *value that is freed when the holder is re-set. That method returns TRUE if value has been set. I was thinking about this speed improvement: create a gda_holder_take_value_do_not_free () [well, the name is unlucky...] that when is re-set will return the stored value instead of freeing it. In this manner it's possible to reuse that GValue without a g_free () and g_value_new_*(). Think for instance to a prepared query that needs a gchararray parameter in a function foo_func (): * create and set a GValue of type G_TYPE_STRING on a global_managed_gvalue1 in a static way. [i.e. no string allocations/duplications required] * get the list of holders with gda_statement_get_parameters (). * set the global_managed_gvalue1 to the holder with gda_holder_take_value_do_not_free (). * the above method will return NULL because no previous values were taken. * ... do some stuff then return on the foo_func () to re-exec the query * re-set the holder's value with a global_managed_gvalue2 and take the returned old value global_managed_gvalue1, which is now set as 'reusable' for a memory objects pool. total number of allocations: holders for the query and two globals values, better if allocated at program start. No string extra dups are required at all. Currently the above method will require something like: holders for the query, two allocations for the GValues and two dups, and the respective gda_value_free () when a new value replaced within the holder with gda_holder_take_value (). The thoughts can be done with gda_holder_set_value_static_str (). I'm sure I can achieve better performances if those method would be available, what do you think? thanks and regards, Massimo _______________________________________________ gnome-db-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-db-list
