1 | #include <glib.h> |
---|---|
2 | |
3 | #define ITERATIONS 100000000 |
4 | |
5 | static void |
6 | test_bitlocks (void) |
7 | { |
8 | guint64 start = g_get_monotonic_time (); |
9 | gint lock = 0; |
10 | gint i; |
11 | |
12 | for (i = 0; i < ITERATIONS; i++) |
13 | { |
14 | g_bit_lock (address: &lock, lock_bit: 0); |
15 | g_bit_unlock (address: &lock, lock_bit: 0); |
16 | } |
17 | |
18 | { |
19 | gdouble elapsed; |
20 | gdouble rate; |
21 | |
22 | elapsed = g_get_monotonic_time () - start; |
23 | elapsed /= 1000000; |
24 | rate = ITERATIONS / elapsed; |
25 | |
26 | g_test_maximized_result (maximized_quantity: rate, format: "iterations per second"); |
27 | } |
28 | } |
29 | |
30 | int |
31 | main (int argc, char **argv) |
32 | { |
33 | g_test_init (argc: &argc, argv: &argv, NULL); |
34 | |
35 | if (g_test_perf ()) |
36 | g_test_add_func (testpath: "/bitlock/performance/uncontended", test_func: test_bitlocks); |
37 | |
38 | return g_test_run (); |
39 | } |
40 |