Hi,

Can this memmove() be safely skipped

https://github.com/gnuradio/gnuradio/blob/master/gr-qtgui/lib/time_sink_f_impl.cc#L627

if ((d_start == 0) || (gr::high_res_timer_now() - d_last_time > d_update_time))?

I think it can, but I am not sure. 

With some high throughput, high sample rate flowgraphs, ps shows my
time_sink_f thread taking up ~41% of a CPU and oprofile shows memmove()
as the number 2 pig on the list:

CPU: Intel Sandy Bridge microarchitecture, speed 3.5e+06 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask 
of 0x00 (No unit mask) count 90000
samples  %        image name               symbol name
24498    33.9825  libvolk.so.0.0.0         volk_32f_convert_64f_u_avx
14278    19.8058  libc-2.18.so             __memmove_ssse3_back
7488     10.3870  no-vmlinux               /no-vmlinux
2668      3.7009  libgnuradio-qtgui-3.7.7git.so.0.0.0 
gr::qtgui::time_sink_f_impl::_test_trigger_slope(float const*) const
2073      2.8756  libpthread-2.18.so       pthread_mutex_lock

The volk_32f_convert_64f_u_avx() call is unavoidable as Qwt wants
doubles for plotting and not floats. But it might also be able to be
deferred to the very end when the decision to plot is known for sure.
(But that's more surgery than I care to take on at the moment.)

Regards,
Andy


_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to