Have you ever compiled two versions of Mixxx to run side-by-side to try and
get a feel for whether your "smoothness" change is any good?

Are you annoyed at having to continuously re-compile or re-run to test two
different approaches you're considering?

Are you bothered by sloppiness in our performance stat tracking -- how we
include Mixxx startup and shutdown events (usually including mega-outliers)
in all of our stat counters and then make decisions based on that?

You may be interested in my latest commit!
https://github.com/mixxxdj/mixxx/commit/25a5fef18eadece78e65390f808abdd66e359796

This adds a lightweight "experiment" mode that lets you segment your
measurements into a base bucket and an experiment bucket.

Create your usual timers / counters / stats trackers as usual and gate your
new code on the experiment flag:

#include "util/experiment.h"

void CoolWidget::paintEvent(...) {
  ScopedTimer t("CoolWidget::paintEvent");

  ... beginning of paintEvent ...

  // added this code
  if (Experiment::isExperiment()) {
    // Hope this speeds things up...
    QThread::msleep(1);
  } else if (Experiment::isBase()) {
    // Optional, you can leave blank / as the existing behavior.
  } else {
    // If you want you can really test 3 different pieces of logic
    // but you will only get explicit stats tracking
    // for BASE and EXPERIMENT modes.
  }

  ... rest of paintEvent ...
}

Compile and run Mixxx.

After Mixxx starts up and stabilizes:
Hit Ctrl+Shift+B (or Developer -> Base) to start recording BASE samples.
Toggle to stop recording.
Hit Ctrl+Shift+E (or Developer -> Experiment) to start recording EXPERIMENT
samples. Toggle to stop recording.
You can use this to capture exactly the time periods you would like to
include in your sample of events (recording is cumulative within a single
Mixxx session).

When you quit Mixxx, where the stats are normally printed you now get a
"BASE STATS" and "EXPERIMENT STATS" section.

Key points:
- No more startup and shutdown events included in your stats tracking!
- Stats segmented into BASE and EXPERIMENT -- only for the times you choose
to record.
- Easily check anecdotal "feel" of a feature without re-compiling or
re-starting Mixxx!

Future work:
- Automatic comparison of stats across base and test (with hints about
whether you have enough samples and statistical significance?)
- Automatic polling modes that regularly swap between base / experiment?

Go forth and measure!
RJ
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to