function run(options) {
    var me = this,
        async = ((async = options && options.async) == null ? me.async : async) && has.timeout;

    // set running to false so reset() won't call abort()
    me.running = false;
    me.reset();
    me.running = true;

    me.count = me.initCount;
    me.times.timeStamp = +new Date;
    me.emit('start');

    if (me._host) {
      if (me.defer) {
        Deferred(me);
      } else {
        cycle({ 'async': async, 'benchmark': me });
      }
    } else {
      compute({ 'async': async, 'benchmark': me });
    }
    return me;
  }
Runs the benchmark.
@memberOf Benchmark
@param {Object} [options={}] Options object.
@returns {Object} The benchmark instance.
@example

// basic usage
bench.run();

// or with options
bench.run({ 'async': true });