Index: invoke.c
===================================================================
--- invoke.c	(revision 861)
+++ invoke.c	(working copy)
@@ -28,7 +28,8 @@
   GError *error = NULL;
   const gchar *name;
   TestStruct *s;
-  
+  GTimer *t1;
+
   g_type_init ();
 
   rep = g_irepository_get_default ();
@@ -66,6 +67,33 @@
   g_assert (retval.v_int == 8);
   g_base_info_unref (info);
   
+  t1 = g_timer_new ();
+  info = g_irepository_find_by_name (rep, "test", "test1");  
+  g_assert (g_base_info_get_type (info) == GI_INFO_TYPE_FUNCTION);
+  function = (GIFunctionInfo *)info;
+
+  retval.v_int = 0;
+  in_args[0].v_int = 4;
+
+  g_timer_start (t1);
+
+  for (len = 0; len < 1000000; len++) 
+    {
+      if (!g_function_info_invoke (function, in_args, 1, NULL, 0, &retval, &error))
+        g_print ("Invokation of %s failed: %s\n",
+	         g_base_info_get_name (info),
+	         error->message);
+    }
+
+  g_timer_stop (t1);
+
+  g_print ("Performance test: %f for 1000000 invocations of test1\n", g_timer_elapsed (t1, NULL));
+
+  g_timer_destroy (t1);
+
+  g_assert (retval.v_int == 8);
+  g_base_info_unref (info);
+
   /* test2 calculates x + 4, 
    * taking x as an in parameter
    * and storing the result in an out parameter
