[glib/nacho/gtask-performance: 6/6] gtask: use g_strconcat() in g_task_return() only if needed
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/nacho/gtask-performance: 6/6] gtask: use g_strconcat() in g_task_return() only if needed
- Date: Mon, 16 May 2022 12:25:51 +0000 (UTC)
commit f38d74b2339ff8184325517d09104a744fb7f3cd
Author: Ignacio Casal Quinteiro <qignacio amazon com>
Date: Fri May 13 16:43:38 2022 +0200
gtask: use g_strconcat() in g_task_return() only if needed
If the task name is NULL there is no need to allocate the string
since this can be expensive if called very often
gio/gtask.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
---
diff --git a/gio/gtask.c b/gio/gtask.c
index 80c0863ff6..365f200add 100644
--- a/gio/gtask.c
+++ b/gio/gtask.c
@@ -1257,7 +1257,6 @@ g_task_return (GTask *task,
GTaskReturnType type)
{
GSource *source;
- gchar *source_name = NULL;
if (type != G_TASK_RETURN_FROM_THREAD)
task->ever_returned = TRUE;
@@ -1306,10 +1305,22 @@ g_task_return (GTask *task,
/* Otherwise, complete in the next iteration */
source = g_idle_source_new ();
- source_name = g_strdup_printf ("[gio] %s complete_in_idle_cb",
- (task->name != NULL) ? task->name : "(unnamed)");
- g_source_set_name (source, source_name);
- g_free (source_name);
+
+ /* Note: in case the task name is NULL we set it as a const string instead
+ * of going through the concat path which is more expensive and may show in the
+ * profiler if g_task_return is called very often
+ */
+ if (task->name == NULL)
+ g_source_set_static_name (source, "[gio] (unnamed) complete_in_idle_cb");
+ else
+ {
+ gchar *source_name;
+
+ source_name = g_strconcat ("[gio] ", task->name, " complete_in_idle_cb", NULL);
+ g_source_set_name (source, source_name);
+ g_free (source_name);
+ }
+
g_task_attach_source (task, source, complete_in_idle_cb);
g_source_unref (source);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]