Wireshark-dev: Re: [Wireshark-dev] Tips regarding measuring function execution times

From: Pascal Quantin <pascal.quantin@xxxxxxxxx>
Date: Sun, 15 Oct 2017 22:50:09 +0200


2017-10-15 22:40 GMT+02:00 João Valverde <joao.valverde@xxxxxxxxxxxxxxxxxx>:


On 15-10-2017 21:32, Peter Wu wrote:
On Sat, Oct 14, 2017 at 02:18:39PM +0000, Paul Offord wrote:
I'm investigating a performance problem with the TRANSUM dissector.  I'd like to measure the accumulated time taken to execute a function in a Release build.  My basic idea is to do something like this:

guint32 execute_time_us;
.
.
start_stopwatch(&execute_time_us);
function_call_to_be_measured();
pause_stopwatch(&execute_time_us);

.
.
.

stop_and_output_stopwatch(&execute_time_us);

Is there a standard way to do this in Wireshark?  How can I output the accumulated time on, say, the Status Line?

Not sure about the Status line question, but you can measure elapsed
microseconds with something like:

     guint64 start_time, end_time;

     start_time = g_get_monotonic_time();
     // ...
     end_time = g_get_monotonic_time();
     // ...
     g_print("elapsed us: %" G_GUINT64_FORMAT, end_time - start_time);

https://developer.gnome.org/glib/stable/glib-Date-and-Time-Functions.html#g-get-monotonic-time


I think console output doesn't work on Windows for graphical applications, or something like that. There isn't a better standard mechanism for debug output in Wireshark, that I know of.

You can make it appear with Edit -> Preferences -> Advanced -> change gui.console_open option to ALWAYS.

Pascal.