[gtk/wip/ebassi/constraint-layout: 63/69] solver: Add private statistics api
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/ebassi/constraint-layout: 63/69] solver: Add private statistics api
- Date: Sun, 30 Jun 2019 23:15:24 +0000 (UTC)
commit cb96b343153d044216521bdd2b55141c8914266b
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jun 29 17:38:36 2019 +0000
solver: Add private statistics api
No point in keeping these counters without
a way to show them.
gtk/gtkconstraintsolver.c | 38 ++++++++++++++++++++++++++++++++++++++
gtk/gtkconstraintsolverprivate.h | 3 +++
2 files changed, 41 insertions(+)
---
diff --git a/gtk/gtkconstraintsolver.c b/gtk/gtkconstraintsolver.c
index e0f3e418cd..7a93a61073 100644
--- a/gtk/gtkconstraintsolver.c
+++ b/gtk/gtkconstraintsolver.c
@@ -1485,6 +1485,8 @@ gtk_constraint_solver_create_variable (GtkConstraintSolver *self,
res = gtk_constraint_variable_new (prefix, name);
gtk_constraint_variable_set_value (res, value);
+ self->var_counter++;
+
return res;
}
@@ -2207,3 +2209,39 @@ gtk_constraint_solver_to_string (GtkConstraintSolver *solver)
return g_string_free (buf, FALSE);
}
+
+char *
+gtk_constraint_solver_statistics (GtkConstraintSolver *solver)
+{
+ GString *buf = g_string_new (NULL);
+
+ g_string_append_printf (buf, "Variables: %d\n", solver->var_counter);
+ g_string_append_printf (buf, "Slack vars: %d\n", solver->slack_counter);
+ g_string_append_printf (buf, "Artificial vars: %d\n", solver->artificial_counter);
+ g_string_append_printf (buf, "Dummy vars: %d\n", solver->dummy_counter);
+ g_string_append_printf (buf, "Stay vars: %d\n", g_hash_table_size (solver->stay_var_map));
+ g_string_append_printf (buf, "Optimize count: %d\n", solver->optimize_count);
+ g_string_append_printf (buf, "Rows: %d\n", g_hash_table_size (solver->rows));
+ g_string_append_printf (buf, "Columns: %d\n", g_hash_table_size (solver->columns));
+
+ if (g_hash_table_size (solver->columns) > 0)
+ {
+ GHashTableIter iter;
+ gpointer val;
+ double sum = 0;
+
+ g_hash_table_iter_init (&iter, solver->columns);
+ while (g_hash_table_iter_next (&iter, NULL, &val))
+ {
+ GtkConstraintVariableSet *set = val;
+ sum += gtk_constraint_variable_set_size (set);
+ }
+ g_string_append_printf (buf, "Avg column size: %g\n", sum / g_hash_table_size (solver->columns));
+ }
+
+ g_string_append_printf (buf, "Infeasible rows: %d\n", solver->infeasible_rows->len);
+ g_string_append_printf (buf, "External basic variables: %d\n", g_hash_table_size (solver->external_rows));
+ g_string_append_printf (buf, "External parametric variables: %d\n", g_hash_table_size
(solver->external_parametric_vars));
+
+ return g_string_free (buf, FALSE);
+}
diff --git a/gtk/gtkconstraintsolverprivate.h b/gtk/gtkconstraintsolverprivate.h
index 69eed376c7..bf2e0df8b6 100644
--- a/gtk/gtkconstraintsolverprivate.h
+++ b/gtk/gtkconstraintsolverprivate.h
@@ -142,4 +142,7 @@ gtk_constraint_solver_clear (GtkConstraintSolver *solver);
char *
gtk_constraint_solver_to_string (GtkConstraintSolver *solver);
+char *
+gtk_constraint_solver_statistics (GtkConstraintSolver *solver);
+
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]