2008/8/25 Massimo Cora' <[EMAIL PROTECTED]>: > 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 ()?
This can be done, even if it would be usefull only for GdaHolder with a G_TYPE_STRING value. > > 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_*(). Could you provide a patch for this? > > 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? That seems a good idea! Cheers, Vivien _______________________________________________ gnome-db-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-db-list
