35 bench_item_new(
const gchar *label, gint n,
45 item->
label = g_strdup(label);
64 #define BENCH_REPORTER_GET_PRIVATE(obj) \
65 (G_TYPE_INSTANCE_GET_PRIVATE((obj), \
66 BENCH_TYPE_REPORTER, \
67 BenchReporterPrivate))
77 static
void dispose (GObject *
object);
82 GObjectClass *gobject_class;
84 gobject_class = G_OBJECT_CLASS(klass);
86 gobject_class->dispose = dispose;
102 dispose(GObject *
object)
109 g_list_foreach(priv->
items, (GFunc)bench_item_free, NULL);
110 g_list_free(priv->
items);
114 G_OBJECT_CLASS(bench_reporter_parent_class)->dispose(
object);
125 const gchar *label, gint n,
135 priv->
items = g_list_append(priv->
items, bench_item_new(label, n,
150 for (n_spaces = max_label_length + strlen(
": ");
165 n_left_spaces = max_label_length - strlen(item->
label);
167 n_left_spaces = max_label_length;
169 for (; n_left_spaces > 0; n_left_spaces--) {
173 g_print(
"%s", item->
label);
178 report_elapsed(gdouble elapsed_time)
180 gdouble one_second = 1.0;
181 gdouble one_millisecond = one_second / 1000.0;
182 gdouble one_microsecond = one_millisecond / 1000.0;
184 if (elapsed_time < one_microsecond) {
185 g_print(
"(%.8fms)", elapsed_time * 1000.0);
186 }
else if (elapsed_time < one_millisecond) {
187 g_print(
"(%.4fms)", elapsed_time * 1000.0);
189 g_print(
"(%.4fs)", elapsed_time);
200 print_label(priv, item, max_label_length);
202 timer = g_timer_new();
204 g_timer_reset(timer);
205 for (i = 0; i < item->
n; i++) {
208 g_timer_continue(timer);
215 report_elapsed(g_timer_elapsed(timer, NULL));
217 g_timer_destroy(timer);
225 gint max_label_length = 0;
228 for (node = priv->
items; node; node = g_list_next(node)) {
232 max_label_length =
MAX(max_label_length, strlen(item->
label));
235 print_header(priv, max_label_length);
236 for (node = priv->
items; node; node = g_list_next(node)) {
239 run_item(priv, item, max_label_length);