Results

production data collected on 05.05.2015



Results Filter





Control Current Sequential
page-start to video-start --- --- ---
page-start to video-init --- --- ---
page-start to script-start --- --- ---
script-start to video-init --- --- ---
video-init to video-start --- --- ---

Platform Video

video-head

An overview of collected data used to identify issues affecting video performance. Download this application as a package and run locally.

Credit Justin Reade, Hector Reyes, Chris DePauw.


Setup

Define video and advertisement values, then 'play' or visit urls where same content is seen in foxsports.com. Similar to the neodigital reference player, but with added control to define interactive unit and video id.








NEO params



Release URL






How

Scripting added to the application is used to measure important video time sequences. 'Yields a consistent data for various form factors, environments, browsers, etc...

Added to document head:

<head>
  <script type="text/javascript">
    var pagestartms = Date.now();
  </script>

Added at bottom of document, above our app.js script element:

  <script type="text/javascript">
    var scriptstartms = Date.now();
  </script>
  <script src="${path:getEx...app.full.js...</script>

Added to occur at 'platformPlayer' init method:

var videoinitms = Date.now();

Added to occur at 'platformPlayer' init completion where video play starts:

var videostartms = Date.now();

Data is printed to console in JSON format, for example:

{
  "browserName" : "Chrome",
  "browserFullVersion" : "41.0.2272.89",
  "browserMajorVersion" : "41",
  "navigatorappName" : "Netscape",
  "navigatoruserAgent" : "Mozilla/5.0 (Maci ... ",
  "whArr" : [1750, 376],
  "fullURL" : "http%3A%2F%2Fchris.foxsports ... ",
  "releaseURL" : "http%3A%2F%2Flink.theplat ... ",
  "isCached" : true,
  "strategy" : "current",
  "err" : "null",
  "page-load to video-start" : 33.34,
    "page-load to video-init"   : 26.57,
      "page-load to script-start"  : 25.64,
      "script-start to video-init" : 0.93,
    "video-init to video-start" : 6.77
}

Experiment

We scripted a new initialization strategy and tested it alongside the current strategy.

  1. Current strategy initializes many definitions simultanaeously. Before platformPlayer is 'done', stacks generated by GlobalNavigation, Analytics and others appear on the event loop in uncontrolled ways.

    viewfoxbox.init();
    Social.init();
    ModuleLoader.init();
      // ModuleLoader will 'init' more modules.
      // loops an array of modules calling 'init' on each.
    adManager.init();
    platformPlayer.init();
    Analytitics.init();
    Transitions.init();
    autocomplete.init();
    GlobalNavigqtion.init();
    InjectorScriptRunner.init();

    many non-video-related requests are made during video init
    video-head

  2. Sequential strategy initializes definitions in sequence. Until platformPlayer is 'done' (or expires) no other initialization begins.

    var startms = Date.now();
    platformPlayer.init(opts, function (err, res) {
      if (err) {
        console.warn('error loading player');
      } else {
        console.log('finish loading player', Date.now() - startms);
      }
      loadnext();
    }, 1000); // expire, 1 second

    mostly video-related requests are made using a sequential strategy
    video-head

  3. Local strategy initializes a the video to this page, which doesn't have much else.

  4. ┬┐Auto strategy? use the packaged version of this application to run many automated tests using a headless browser.


Results

Filters below are applied to this collection of JSON data.



Results Filter





Control Current Sequential
page-start to video-start --- --- ---
page-start to video-init --- --- ---
page-start to script-start --- --- ---
script-start to video-init --- --- ---
video-init to video-start --- --- ---