mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-09-20 09:16:15 +02:00
tests: performance: add emit-handled/emit-unhandled tests
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@linux.intel.com>
This commit is contained in:
parent
00f1e1f5c2
commit
3be0e57458
@ -560,7 +560,7 @@ test_type_check_teardown (PerformanceTest *test,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* Test signal emissions performance
|
* Test signal unhandled emissions performance
|
||||||
*************************************************************/
|
*************************************************************/
|
||||||
|
|
||||||
#define NUM_EMISSIONS_PER_ROUND 10000
|
#define NUM_EMISSIONS_PER_ROUND 10000
|
||||||
@ -569,8 +569,9 @@ struct EmissionTest {
|
|||||||
GObject *object;
|
GObject *object;
|
||||||
int n_checks;
|
int n_checks;
|
||||||
};
|
};
|
||||||
|
|
||||||
static gpointer
|
static gpointer
|
||||||
test_emission_setup (PerformanceTest *test)
|
test_emission_unhandled_setup (PerformanceTest *test)
|
||||||
{
|
{
|
||||||
struct EmissionTest *data;
|
struct EmissionTest *data;
|
||||||
|
|
||||||
@ -581,9 +582,9 @@ test_emission_setup (PerformanceTest *test)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_emission_init (PerformanceTest *test,
|
test_emission_unhandled_init (PerformanceTest *test,
|
||||||
gpointer _data,
|
gpointer _data,
|
||||||
double factor)
|
double factor)
|
||||||
{
|
{
|
||||||
struct EmissionTest *data = _data;
|
struct EmissionTest *data = _data;
|
||||||
|
|
||||||
@ -591,8 +592,8 @@ test_emission_init (PerformanceTest *test,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_emission_run (PerformanceTest *test,
|
test_emission_unhandled_run (PerformanceTest *test,
|
||||||
gpointer _data)
|
gpointer _data)
|
||||||
{
|
{
|
||||||
struct EmissionTest *data = _data;
|
struct EmissionTest *data = _data;
|
||||||
GObject *object = data->object;
|
GObject *object = data->object;
|
||||||
@ -605,15 +606,15 @@ test_emission_run (PerformanceTest *test,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_emission_finish (PerformanceTest *test,
|
test_emission_unhandled_finish (PerformanceTest *test,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_emission_print_result (PerformanceTest *test,
|
test_emission_unhandled_print_result (PerformanceTest *test,
|
||||||
gpointer _data,
|
gpointer _data,
|
||||||
double time)
|
double time)
|
||||||
{
|
{
|
||||||
struct EmissionTest *data = _data;
|
struct EmissionTest *data = _data;
|
||||||
|
|
||||||
@ -622,8 +623,8 @@ test_emission_print_result (PerformanceTest *test,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_emission_teardown (PerformanceTest *test,
|
test_emission_unhandled_teardown (PerformanceTest *test,
|
||||||
gpointer _data)
|
gpointer _data)
|
||||||
{
|
{
|
||||||
struct EmissionTest *data = _data;
|
struct EmissionTest *data = _data;
|
||||||
|
|
||||||
@ -631,7 +632,79 @@ test_emission_teardown (PerformanceTest *test,
|
|||||||
g_free (data);
|
g_free (data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************
|
||||||
|
* Test signal handled emissions performance
|
||||||
|
*************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_emission_handled_handler (ComplexObject *obj, gpointer data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static gpointer
|
||||||
|
test_emission_handled_setup (PerformanceTest *test)
|
||||||
|
{
|
||||||
|
struct EmissionTest *data;
|
||||||
|
|
||||||
|
data = g_new0 (struct EmissionTest, 1);
|
||||||
|
data->object = g_object_new (COMPLEX_TYPE_OBJECT, NULL);
|
||||||
|
g_signal_connect (data->object, "signal",
|
||||||
|
G_CALLBACK (test_emission_handled_handler),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_emission_handled_init (PerformanceTest *test,
|
||||||
|
gpointer _data,
|
||||||
|
double factor)
|
||||||
|
{
|
||||||
|
struct EmissionTest *data = _data;
|
||||||
|
|
||||||
|
data->n_checks = factor * NUM_EMISSIONS_PER_ROUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_emission_handled_run (PerformanceTest *test,
|
||||||
|
gpointer _data)
|
||||||
|
{
|
||||||
|
struct EmissionTest *data = _data;
|
||||||
|
GObject *object = data->object;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < data->n_checks; i++)
|
||||||
|
g_signal_emit (object,
|
||||||
|
complex_signals[COMPLEX_SIGNAL],
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_emission_handled_finish (PerformanceTest *test,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_emission_handled_print_result (PerformanceTest *test,
|
||||||
|
gpointer _data,
|
||||||
|
double time)
|
||||||
|
{
|
||||||
|
struct EmissionTest *data = _data;
|
||||||
|
|
||||||
|
g_print ("Emissions per second: %.0f\n",
|
||||||
|
data->n_checks / time);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_emission_handled_teardown (PerformanceTest *test,
|
||||||
|
gpointer _data)
|
||||||
|
{
|
||||||
|
struct EmissionTest *data = _data;
|
||||||
|
|
||||||
|
g_object_unref (data->object);
|
||||||
|
g_free (data);
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* Main test code
|
* Main test code
|
||||||
@ -669,14 +742,24 @@ static PerformanceTest tests[] = {
|
|||||||
test_type_check_print_result
|
test_type_check_print_result
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"emit",
|
"emit-unhandled",
|
||||||
NULL,
|
NULL,
|
||||||
test_emission_setup,
|
test_emission_unhandled_setup,
|
||||||
test_emission_init,
|
test_emission_unhandled_init,
|
||||||
test_emission_run,
|
test_emission_unhandled_run,
|
||||||
test_emission_finish,
|
test_emission_unhandled_finish,
|
||||||
test_emission_teardown,
|
test_emission_unhandled_teardown,
|
||||||
test_emission_print_result
|
test_emission_unhandled_print_result
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emit-handled",
|
||||||
|
NULL,
|
||||||
|
test_emission_handled_setup,
|
||||||
|
test_emission_handled_init,
|
||||||
|
test_emission_handled_run,
|
||||||
|
test_emission_handled_finish,
|
||||||
|
test_emission_handled_teardown,
|
||||||
|
test_emission_handled_print_result
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user