Hi,<br><br>I've done some D-Bus benchmarks, as done here <a href="http://lists.freedesktop.org/archives/dbus/2007-October/008829.html">http://lists.freedesktop.org/archives/dbus/2007-October/008829.html</a><br>I'm also interested in a quick D-Bus for an embedded solution based on ARM9@200MHz.<br>
<br>I use dbus-1.2.3 and built it to be the quickest as below:<br> - without paranoid validation (mode = DBUS_VALIDATION_MODE_WE_TRUST_THIS_DATA_ABSOLUTELY)<br> - with these options: ./configure --prefix=/usr --host=arm-linux --with-xml=expat --without-x --disable-tests --disable-verbose-mode --disable-asserts --disable-checks<br>
<br>I've written a simple test program where the client calls a synchronous method (with D-Bus GLib bindings) with 3 integer input arguments and 3 integer output arguments. I measure the method call duration as described below:<br>
<br>client side:<br> gettimeofday()<br> dbus_g_proxy_call (proxy, "MyMethod", error, G_TYPE_INT, IN_arg0, G_TYPE_INT, IN_arg1, G_TYPE_INT, IN_arg2, G_TYPE_INVALID, G_TYPE_INT, OUT_arg3, G_TYPE_INT, OUT_arg4, G_TYPE_INT, OUT_arg5, G_TYPE_INVALID)<br>
<br>server side:<br> gboolean test_object_my_method (TestObject *obj, gint a, gint b, gint c, gint *r1, gint *r2, gint *r3, GError **error)<br> {<br> gettimeofday()<br> }<br><br>Result: the method call duration lasts about 4700us on ARM9@200MHz.<br>
This number is an average of 1000 measures and is quite constant.<br><br>I have also measured with asynchronous method and I get same numbers.<br><br>Are these numbers normal ?<br>Why is D-Bus so slow ?<br>Is it possible to improve it ?<br>