Multimedia processing is usually quite computationally intensive, and faster-than-realtime processing is a often a requirement. Small systems, such as smart phones, increase the importance of minimizing CPU and memory use.
Every time the code is changed benchmarking is advised.
In order to benchmark a change, the simplest approach is to run the code and see if it is faster than before, but most changes will not have a big enough impact on performance that you can see it just by looking at the code run, so you will need to use a profiling or tracing tool. Ideally you should run your test several times, collect the resulting time and compute the average and standard deviation. This reduces any little variations in CPU load or memory access times that are unrelated to your code - for instance, due to whatever else the system happens to also be running at the same time.
DTrace is a comprehensive tracing framework. It originated on Solaris, and ports to other platforms vary in maturity.
DTrace port is available out of box on FreeBSD.
There is an ongoing effort to have DTrace on Linux.
DTrace is provided and XCode sports a simplified GUI called Instruments.
PmcTools aim to be a BSD equivalent of Linux Perf.
Use START_TIMER and STOP_TIMER from libavutil/timer.h
They are macro and they should not be nested; you get the number of ticks spent between the section. Compile as usual, but don't leave them in production code.
You can also git stash the changes so that you can quickly apply them when you rebase.
Hint: lower numbers are better.
The benchmark option provides the runtime and the memory usage.
avconv -nostats -v quiet -threads 1 -benchmark -i sample -f null -