You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
901 lines
203 KiB
901 lines
203 KiB
8 years ago
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<title>criterion report</title>
|
||
|
<script language="javascript" type="text/javascript">
|
||
|
/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
||
|
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"num
|
||
|
},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new
|
||
|
},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.par
|
||
|
|
||
|
</script>
|
||
|
<script language="javascript" type="text/javascript">
|
||
|
/* Javascript plotting library for jQuery, version 0.8.3.
|
||
|
|
||
|
Copyright (c) 2007-2014 IOLA and Ole Laursen.
|
||
|
Licensed under the MIT license.
|
||
|
|
||
|
*/
|
||
|
(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;if(!$.fn.detach){$.fn.detach=function(){return this.each(function(){if(this.parentNode){this.parentNode.removeChild(this)}})}}function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingSto
|
||
|
if(yrange.from==null)yrange.from=yrange.axis.min;if(yrange.to==null)yrange.to=yrange.axis.max;if(xrange.to<xrange.axis.min||xrange.from>xrange.axis.max||yrange.to<yrange.axis.min||yrange.from>yrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);var xequal=xrange.from===xrange.to,yequal=yrange.from===yrange.to;if(xequal&&yequal){continue}xrange.from=Math.floor(xrange.axis.p2c(xrange.from));xrange.to=Math.floor(xrange.axis.p2c(xrange.to));yrange.from=Math.floor(yrange.axis.p2c(yrange.from));yrange.to=Math.floor(yrange.axis.p2c(yrange.to));if(xequal||yequal){var lineWidth=m.lineWidth||options.grid.markingsLineWidth,subPixel=lineWidth%2?.5:0;ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=lineWidth;if(xequal){ctx.moveTo(xrange.to+subPixel,yrange.from);ctx.lineTo(xrange.to+subPixel,yrange.to)}else{ctx.moveTo(xrange.from,yrange.to+subPixel);ctx.lineTo(xrange.to,yrange.to+subPixel)}ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;j<axes.length;++j){var axis=axes[j],box=axis.box,t=axis.tickLength,x,y,xoff,yoff;if(!axis.show||axis.ticks.length==0)continue;ctx.lineWidth=1;if(axis.direction=="x"){x=0;if(t=="full")y=axis.position=="top"?0:plotHeight;else y=box.top-plotOffset.top+(axis.position=="top"?box.height:0)}else{y=0;if(t=="full")x=axis.position=="left"?0:plotWidth;else x=box.left-plotOffset.left+(axis.position=="left"?box.width:0)}if(!axis.innermost){ctx.strokeStyle=axis.options.color;ctx.beginPath();xoff=yoff=0;if(axis.direction=="x")xoff=plotWidth+1;else yoff=plotHeight+1;if(ctx.lineWidth==1){if(axis.direction=="x"){y=Math.floor(y)+.5}else{x=Math.floor(x)+.5}}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff);ctx.stroke()}ctx.strokeStyle=axis.options.tickColor;ctx.beginPath();for(i=0;i<axis.ticks.length;++i){var v=axis.ticks[i].v;xoff=yoff=0;if(isNaN(v)||v<axis.min||v>axis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;i<axis.ticks.length;++i){tick=axis.ticks[i];if(!tick.label||tick.v<axis.min||tick.v>axis.max)continue;if(axis.directi
|
||
|
</script>
|
||
|
<script language="javascript" type="text/javascript">
|
||
|
(function ($) {
|
||
|
$.zip = function(a,b) {
|
||
|
var x = Math.min(a.length,b.length);
|
||
|
var c = new Array(x);
|
||
|
for (var i = 0; i < x; i++)
|
||
|
c[i] = [a[i],b[i]];
|
||
|
return c;
|
||
|
};
|
||
|
|
||
|
$.mean = function(ary) {
|
||
|
var m = 0, i = 0;
|
||
|
|
||
|
while (i < ary.length) {
|
||
|
var j = i++;
|
||
|
m += (ary[j] - m) / i;
|
||
|
}
|
||
|
|
||
|
return m;
|
||
|
};
|
||
|
|
||
|
$.timeUnits = function(secs) {
|
||
|
if (secs < 0) return $.timeUnits(-secs);
|
||
|
else if (secs >= 1e9) return [1e-9, "Gs"];
|
||
|
else if (secs >= 1e6) return [1e-6, "Ms"];
|
||
|
else if (secs >= 1) return [1, "s"];
|
||
|
else if (secs >= 1e-3) return [1e3, "ms"];
|
||
|
else if (secs >= 1e-6) return [1e6, "\u03bcs"];
|
||
|
else if (secs >= 1e-9) return [1e9, "ns"];
|
||
|
else if (secs >= 1e-12) return [1e12, "ps"];
|
||
|
return [1, "s"];
|
||
|
};
|
||
|
|
||
|
$.scaleTimes = function(ary) {
|
||
|
var s = $.timeUnits($.mean(ary));
|
||
|
return [$.scaleBy(s[0], ary), s[0]];
|
||
|
};
|
||
|
|
||
|
$.prepareTime = function(secs) {
|
||
|
var units = $.timeUnits(secs);
|
||
|
var scaled = secs * units[0];
|
||
|
var s = scaled.toPrecision(3);
|
||
|
var t = scaled.toString();
|
||
|
return [t.length < s.length ? t : s, units[1]];
|
||
|
};
|
||
|
|
||
|
$.scaleBy = function(x, ary) {
|
||
|
var nary = new Array(ary.length);
|
||
|
for (var i = 0; i < ary.length; i++)
|
||
|
nary[i] = ary[i] * x;
|
||
|
return nary;
|
||
|
};
|
||
|
|
||
|
$.renderTime = function(secs) {
|
||
|
var x = $.prepareTime(secs);
|
||
|
return x[0] + ' ' + x[1];
|
||
|
};
|
||
|
|
||
|
$.unitFormatter = function(scale) {
|
||
|
var labelname;
|
||
|
return function(secs,axis) {
|
||
|
var x = $.prepareTime(secs / scale);
|
||
|
if (labelname === x[1])
|
||
|
return x[0];
|
||
|
else {
|
||
|
labelname = x[1];
|
||
|
return x[0] + ' ' + x[1];
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
|
||
|
$.addTooltip = function(name, renderText) {
|
||
|
function showTooltip(x, y, contents) {
|
||
|
$('<div id="tooltip">' + contents + '</div>').css( {
|
||
|
position: 'absolute',
|
||
|
display: 'none',
|
||
|
top: y + 5,
|
||
|
left: x + 5,
|
||
|
border: '1px solid #fdd',
|
||
|
padding: '2px',
|
||
|
'background-color': '#fee',
|
||
|
opacity: 0.80
|
||
|
}).appendTo("body").fadeIn(200);
|
||
|
};
|
||
|
var pp = null;
|
||
|
$(name).bind("plothover", function (event, pos, item) {
|
||
|
$("#x").text(pos.x.toFixed(2));
|
||
|
$("#y").text(pos.y.toFixed(2));
|
||
|
|
||
|
if (item) {
|
||
|
if (pp != item.dataIndex) {
|
||
|
pp = item.dataIndex;
|
||
|
|
||
|
$("#tooltip").remove();
|
||
|
var x = item.datapoint[0],
|
||
|
y = item.datapoint[1];
|
||
|
|
||
|
showTooltip(item.pageX, item.pageY, renderText(x,y));
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
$("#tooltip").remove();
|
||
|
pp = null;
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
})(jQuery);
|
||
|
|
||
|
</script>
|
||
|
<style type="text/css">
|
||
|
html, body {
|
||
|
height: 100%;
|
||
|
margin: 0;
|
||
|
}
|
||
|
|
||
|
#wrap {
|
||
|
min-height: 100%;
|
||
|
}
|
||
|
|
||
|
#main {
|
||
|
overflow: auto;
|
||
|
padding-bottom: 180px; /* must be same height as the footer */
|
||
|
}
|
||
|
|
||
|
#footer {
|
||
|
position: relative;
|
||
|
margin-top: -180px; /* negative value of footer height */
|
||
|
height: 180px;
|
||
|
clear: both;
|
||
|
background: #888;
|
||
|
margin: 40px 0 0;
|
||
|
color: white;
|
||
|
font-size: larger;
|
||
|
font-weight: 300;
|
||
|
}
|
||
|
|
||
|
body:before {
|
||
|
/* Opera fix */
|
||
|
content: "";
|
||
|
height: 100%;
|
||
|
float: left;
|
||
|
width: 0;
|
||
|
margin-top: -32767px;
|
||
|
}
|
||
|
|
||
|
body {
|
||
|
font: 14px Helvetica Neue;
|
||
|
text-rendering: optimizeLegibility;
|
||
|
margin-top: 1em;
|
||
|
}
|
||
|
|
||
|
a:link {
|
||
|
color: steelblue;
|
||
|
text-decoration: none;
|
||
|
}
|
||
|
|
||
|
a:visited {
|
||
|
color: #4a743b;
|
||
|
text-decoration: none;
|
||
|
}
|
||
|
|
||
|
#footer a {
|
||
|
color: white;
|
||
|
text-decoration: underline;
|
||
|
}
|
||
|
|
||
|
.hover {
|
||
|
color: steelblue;
|
||
|
text-decoration: none;
|
||
|
}
|
||
|
|
||
|
.body {
|
||
|
width: 960px;
|
||
|
margin: auto;
|
||
|
}
|
||
|
|
||
|
.footfirst {
|
||
|
position: relative;
|
||
|
top: 30px;
|
||
|
}
|
||
|
|
||
|
th {
|
||
|
font-weight: 500;
|
||
|
opacity: 0.8;
|
||
|
}
|
||
|
|
||
|
th.cibound {
|
||
|
opacity: 0.4;
|
||
|
}
|
||
|
|
||
|
.confinterval {
|
||
|
opacity: 0.5;
|
||
|
}
|
||
|
|
||
|
h1 {
|
||
|
font-size: 36px;
|
||
|
font-weight: 300;
|
||
|
margin-bottom: .3em;
|
||
|
}
|
||
|
|
||
|
h2 {
|
||
|
font-size: 30px;
|
||
|
font-weight: 300;
|
||
|
margin-bottom: .3em;
|
||
|
}
|
||
|
|
||
|
.meanlegend {
|
||
|
color: #404040;
|
||
|
background-color: #ffffff;
|
||
|
opacity: 0.6;
|
||
|
font-size: smaller;
|
||
|
}
|
||
|
|
||
|
</style>
|
||
|
<!--[if !IE 7]>
|
||
|
<style type="text/css">
|
||
|
#wrap {display:table;height:100%}
|
||
|
</style>
|
||
|
<![endif]-->
|
||
|
</head>
|
||
|
<body>
|
||
|
<div id="wrap">
|
||
|
<div id="main" class="body">
|
||
|
<h1>criterion performance measurements</h1>
|
||
|
|
||
|
<h2>overview</h2>
|
||
|
|
||
|
<p><a href="#grokularation">want to understand this report?</a></p>
|
||
|
|
||
|
<div id="overview" class="ovchart" style="width:900px;height:100px;"></div>
|
||
|
|
||
|
<h2><a name="b0">hashMap</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde0" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time0" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle0" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb0">xxx</span></td>
|
||
|
<td><span class="olstimept0">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub0">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb0">xxx</span></td>
|
||
|
<td><span class="olsr2pt0">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub0">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">1.183382868328787</span></td>
|
||
|
<td><span class="time">1.215732274359608</span></td>
|
||
|
<td><span class="confinterval citime">1.2389196604156985</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">0.0</span></td>
|
||
|
<td><span class="time">3.503516182025675e-2</span></td>
|
||
|
<td><span class="confinterval citime">4.016173074386313e-2</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have moderate
|
||
|
(<span class="percent">0.18749999999999997</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
<h2><a name="b1">lazyHashMap</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde1" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time1" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle1" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb1">xxx</span></td>
|
||
|
<td><span class="olstimept1">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub1">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb1">xxx</span></td>
|
||
|
<td><span class="olsr2pt1">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub1">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">0.6865059789976155</span></td>
|
||
|
<td><span class="time">0.7542026497750826</span></td>
|
||
|
<td><span class="confinterval citime">0.8048248111077276</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">0.0</span></td>
|
||
|
<td><span class="time">7.726176646268411e-2</span></td>
|
||
|
<td><span class="confinterval citime">8.76801554170899e-2</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have moderate
|
||
|
(<span class="percent">0.22673586586940853</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
<h2><a name="b2">treeMap</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde2" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time2" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle2" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb2">xxx</span></td>
|
||
|
<td><span class="olstimept2">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub2">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb2">xxx</span></td>
|
||
|
<td><span class="olsr2pt2">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub2">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">0.8238558324788979</span></td>
|
||
|
<td><span class="time">0.8307417458265022</span></td>
|
||
|
<td><span class="confinterval citime">0.8342716353335188</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">1.3597399555105182e-16</span></td>
|
||
|
<td><span class="time">5.969075961189514e-3</span></td>
|
||
|
<td><span class="confinterval citime">6.1139479712569505e-3</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have moderate
|
||
|
(<span class="percent">0.1875</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
<h2><a name="b3">lazyTreeMap</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde3" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time3" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle3" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb3">xxx</span></td>
|
||
|
<td><span class="olstimept3">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub3">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb3">xxx</span></td>
|
||
|
<td><span class="olsr2pt3">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub3">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">0.9354499509970536</span></td>
|
||
|
<td><span class="time">0.9851443474133057</span></td>
|
||
|
<td><span class="confinterval citime">1.0627382844955944</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">0.0</span></td>
|
||
|
<td><span class="time">6.807619435779887e-2</span></td>
|
||
|
<td><span class="confinterval citime">7.348995361008136e-2</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have moderate
|
||
|
(<span class="percent">0.19887312451224287</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
<h2><a name="b4">ekmett nub</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde4" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time4" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle4" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb4">xxx</span></td>
|
||
|
<td><span class="olstimept4">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub4">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb4">xxx</span></td>
|
||
|
<td><span class="olsr2pt4">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub4">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">0.9545364879865016</span></td>
|
||
|
<td><span class="time">1.5538256277149696</span></td>
|
||
|
<td><span class="confinterval citime">1.7950628808842766</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">0.0</span></td>
|
||
|
<td><span class="time">0.5477803725389206</span></td>
|
||
|
<td><span class="confinterval citime">0.6201640592663545</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have severe
|
||
|
(<span class="percent">0.7323203286478808</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
<h2><a name="b5">group . sort</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde5" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time5" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle5" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb5">xxx</span></td>
|
||
|
<td><span class="olstimept5">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub5">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb5">xxx</span></td>
|
||
|
<td><span class="olsr2pt5">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub5">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">0.7222421209859246</span></td>
|
||
|
<td><span class="time">0.7364937729645803</span></td>
|
||
|
<td><span class="confinterval citime">0.7451906630518073</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">0.0</span></td>
|
||
|
<td><span class="time">1.321159981561309e-2</span></td>
|
||
|
<td><span class="confinterval citime">1.5063455498919222e-2</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have moderate
|
||
|
(<span class="percent">0.18749999999999997</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
<h2><a name="b6">nub</a></h2>
|
||
|
<table width="100%">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td><div id="kde6" class="kdechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<td><div id="time6" class="timechart"
|
||
|
style="width:450px;height:278px;"></div></td>
|
||
|
<!--
|
||
|
<td><div id="cycle6" class="cyclechart"
|
||
|
style="width:300px;height:278px;"></div></td>
|
||
|
-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<table>
|
||
|
<thead class="analysis">
|
||
|
<th></th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">lower bound</th>
|
||
|
<th>estimate</th>
|
||
|
<th class="cibound"
|
||
|
title="0.95 confidence level">upper bound</th>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td>OLS regression</td>
|
||
|
<td><span class="confinterval olstimelb6">xxx</span></td>
|
||
|
<td><span class="olstimept6">xxx</span></td>
|
||
|
<td><span class="confinterval olstimeub6">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>R² goodness-of-fit</td>
|
||
|
<td><span class="confinterval olsr2lb6">xxx</span></td>
|
||
|
<td><span class="olsr2pt6">xxx</span></td>
|
||
|
<td><span class="confinterval olsr2ub6">xxx</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Mean execution time</td>
|
||
|
<td><span class="confinterval citime">4.307012264498212</span></td>
|
||
|
<td><span class="time">4.448000653498998</span></td>
|
||
|
<td><span class="confinterval citime">4.5421990593317405</span></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td>Standard deviation</td>
|
||
|
<td><span class="confinterval citime">0.0</span></td>
|
||
|
<td><span class="time">0.14129862380354494</span></td>
|
||
|
<td><span class="confinterval citime">0.16315642489430177</span></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<span class="outliers">
|
||
|
<p>Outlying measurements have moderate
|
||
|
(<span class="percent">0.18749999999999997</span>%)
|
||
|
effect on estimated standard deviation.</p>
|
||
|
</span>
|
||
|
|
||
|
<h2><a name="grokularation">understanding this report</a></h2>
|
||
|
|
||
|
<p>In this report, each function benchmarked by criterion is assigned
|
||
|
a section of its own. The charts in each section are active; if
|
||
|
you hover your mouse over data points and annotations, you will see
|
||
|
more details.</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>The chart on the left is a
|
||
|
<a href="http://en.wikipedia.org/wiki/Kernel_density_estimation">kernel
|
||
|
density estimate</a> (also known as a KDE) of time
|
||
|
measurements. This graphs the probability of any given time
|
||
|
measurement occurring. A spike indicates that a measurement of a
|
||
|
particular time occurred; its height indicates how often that
|
||
|
measurement was repeated.</li>
|
||
|
|
||
|
<li>The chart on the right is the raw data from which the kernel
|
||
|
density estimate is built. The <i>x</i> axis indicates the
|
||
|
number of loop iterations, while the <i>y</i> axis shows measured
|
||
|
execution time for the given number of loop iterations. The
|
||
|
line behind the values is the linear regression prediction of
|
||
|
execution time for a given number of iterations. Ideally, all
|
||
|
measurements will be on (or very near) this line.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>Under the charts is a small table.
|
||
|
The first two rows are the results of a linear regression run
|
||
|
on the measurements displayed in the right-hand chart.</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><i>OLS regression</i> indicates the
|
||
|
time estimated for a single loop iteration using an ordinary
|
||
|
least-squares regression model. This number is more accurate
|
||
|
than the <i>mean</i> estimate below it, as it more effectively
|
||
|
eliminates measurement overhead and other constant factors.</li>
|
||
|
<li><i>R² goodness-of-fit</i> is a measure of how
|
||
|
accurately the linear regression model fits the observed
|
||
|
measurements. If the measurements are not too noisy, R²
|
||
|
should lie between 0.99 and 1, indicating an excellent fit. If
|
||
|
the number is below 0.99, something is confounding the accuracy
|
||
|
of the linear model.</li>
|
||
|
<li><i>Mean execution time</i> and <i>standard deviation</i> are
|
||
|
statistics calculated from execution time
|
||
|
divided by number of iterations.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>We use a statistical technique called
|
||
|
the <a href="http://en.wikipedia.org/wiki/Bootstrapping_(statistics)">bootstrap</a>
|
||
|
to provide confidence intervals on our estimates. The
|
||
|
bootstrap-derived upper and lower bounds on estimates let you see
|
||
|
how accurate we believe those estimates to be. (Hover the mouse
|
||
|
over the table headers to see the confidence levels.)</p>
|
||
|
|
||
|
<p>A noisy benchmarking environment can cause some or many
|
||
|
measurements to fall far from the mean. These outlying
|
||
|
measurements can have a significant inflationary effect on the
|
||
|
estimate of the standard deviation. We calculate and display an
|
||
|
estimate of the extent to which the standard deviation has been
|
||
|
inflated by outliers.</p>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(function () {
|
||
|
function mangulate(rpt) {
|
||
|
var measured = function(key) {
|
||
|
var idx = rpt.reportKeys.indexOf(key);
|
||
|
return rpt.reportMeasured.map(function(r) { return r[idx]; });
|
||
|
};
|
||
|
var number = rpt.reportNumber;
|
||
|
var name = rpt.reportName;
|
||
|
var mean = rpt.reportAnalysis.anMean.estPoint;
|
||
|
var iters = measured("iters");
|
||
|
var times = measured("time");
|
||
|
var kdetimes = rpt.reportKDEs[0].kdeValues;
|
||
|
var kdepdf = rpt.reportKDEs[0].kdePDF;
|
||
|
|
||
|
var meanSecs = mean;
|
||
|
var units = $.timeUnits(mean);
|
||
|
var rgrs = rpt.reportAnalysis.anRegress[0];
|
||
|
var scale = units[0];
|
||
|
var olsTime = rgrs.regCoeffs.iters;
|
||
|
$(".olstimept" + number).text(function() {
|
||
|
return $.renderTime(olsTime.estPoint);
|
||
|
});
|
||
|
$(".olstimelb" + number).text(function() {
|
||
|
return $.renderTime(olsTime.estLowerBound);
|
||
|
});
|
||
|
$(".olstimeub" + number).text(function() {
|
||
|
return $.renderTime(olsTime.estUpperBound);
|
||
|
});
|
||
|
$(".olsr2pt" + number).text(function() {
|
||
|
return rgrs.regRSquare.estPoint.toFixed(3);
|
||
|
});
|
||
|
$(".olsr2lb" + number).text(function() {
|
||
|
return rgrs.regRSquare.estLowerBound.toFixed(3);
|
||
|
});
|
||
|
$(".olsr2ub" + number).text(function() {
|
||
|
return rgrs.regRSquare.estUpperBound.toFixed(3);
|
||
|
});
|
||
|
mean *= scale;
|
||
|
kdetimes = $.scaleBy(scale, kdetimes);
|
||
|
var kq = $("#kde" + number);
|
||
|
var k = $.plot(kq,
|
||
|
[{ label: name + " time densities",
|
||
|
data: $.zip(kdetimes, kdepdf),
|
||
|
}],
|
||
|
{ xaxis: { tickFormatter: $.unitFormatter(scale) },
|
||
|
yaxis: { ticks: false },
|
||
|
grid: { borderColor: "#777",
|
||
|
hoverable: true, markings: [ { color: '#6fd3fb',
|
||
|
lineWidth: 1.5, xaxis: { from: mean, to: mean } } ] },
|
||
|
});
|
||
|
var o = k.pointOffset({ x: mean, y: 0});
|
||
|
kq.append('<div class="meanlegend" title="' + $.renderTime(meanSecs) +
|
||
|
'" style="position:absolute;left:' + (o.left + 4) +
|
||
|
'px;bottom:139px;">mean</div>');
|
||
|
$.addTooltip("#kde" + number,
|
||
|
function(secs) { return $.renderTime(secs / scale); });
|
||
|
var timepairs = new Array(times.length);
|
||
|
var lastiter = iters[iters.length-1];
|
||
|
var olspairs = [[0,0], [lastiter, lastiter * scale * olsTime.estPoint]];
|
||
|
for (var i = 0; i < times.length; i++)
|
||
|
timepairs[i] = [iters[i],times[i]*scale];
|
||
|
iterFormatter = function() {
|
||
|
var denom = 0;
|
||
|
return function(iters) {
|
||
|
if (iters == 0)
|
||
|
return '';
|
||
|
if (denom > 0)
|
||
|
return (iters / denom).toFixed();
|
||
|
var power;
|
||
|
if (iters >= 1e9) {
|
||
|
denom = '1e9'; power = '⁹';
|
||
|
}
|
||
|
if (iters >= 1e6) {
|
||
|
denom = '1e6'; power = '⁶';
|
||
|
}
|
||
|
else if (iters >= 1e3) {
|
||
|
denom = '1e3'; power = '³';
|
||
|
}
|
||
|
else denom = 1;
|
||
|
if (denom > 1) {
|
||
|
iters = (iters / denom).toFixed();
|
||
|
iters += '×10' + power + ' iters';
|
||
|
} else {
|
||
|
iters += ' iters';
|
||
|
}
|
||
|
return iters;
|
||
|
};
|
||
|
};
|
||
|
$.plot($("#time" + number),
|
||
|
[{ label: "regression", data: olspairs,
|
||
|
lines: { show: true } },
|
||
|
{ label: name + " times", data: timepairs,
|
||
|
points: { show: true } }],
|
||
|
{ grid: { borderColor: "#777", hoverable: true },
|
||
|
xaxis: { tickFormatter: iterFormatter() },
|
||
|
yaxis: { tickFormatter: $.unitFormatter(scale) } });
|
||
|
$.addTooltip("#time" + number,
|
||
|
function(iters,secs) {
|
||
|
return ($.renderTime(secs / scale) + ' / ' +
|
||
|
iters.toLocaleString() + ' iters');
|
||
|
});
|
||
|
if (0) {
|
||
|
var cyclepairs = new Array(cycles.length);
|
||
|
for (var i = 0; i < cycles.length; i++)
|
||
|
cyclepairs[i] = [cycles[i],i];
|
||
|
$.plot($("#cycle" + number),
|
||
|
[{ label: name + " cycles",
|
||
|
data: cyclepairs }],
|
||
|
{ points: { show: true },
|
||
|
grid: { borderColor: "#777", hoverable: true },
|
||
|
xaxis: { tickFormatter:
|
||
|
function(cycles,axis) { return cycles + ' cycles'; }},
|
||
|
yaxis: { ticks: false },
|
||
|
});
|
||
|
$.addTooltip("#cycles" + number, function(x,y) { return x + ' cycles'; });
|
||
|
}
|
||
|
};
|
||
|
var reports = [{"reportAnalysis":{"anMean":{"estUpperBound":1.2389196604156985,"estLowerBound":1.183382868328787,"estPoint":1.215732274359608,"estConfidenceLevel":0.95},"anRegress":[{"regRSquare":{"estUpperBound":1,"estLowerBound":0.990472322258579,"estPoint":0.9974477390242231,"estConfidenceLevel":0.95},"regResponder":"time","regCoeffs":{"y":{"estUpperBound":0.41737447702325414,"estLowerBound":-0.3298311910766677,"estPoint":-4.3495293022712e-2,"estConfidenceLevel":0.95},"iters":{"estUpperBound":1.3805940440215627,"estLowerBound":1.0442585519922452,"estPoint":1.2198797664110304,"estConfidenceLevel":0.95}}}],"anStdDev":{"estUpperBound":4.016173074386313e-2,"estLowerBound":0.0,"estPoint":3.503516182025675e-2,"estConfidenceLevel":0.95},"anOutlierVar":{"ovFraction":0.18749999999999997,"ovDesc":"moderate","ovEffect":"Moderate"},"anOverhead":3.0560272544522004e-6},"reportKDEs":[{"kdeValues":[1.1764266525119598,1.1770839327466207,1.1777412129812814,1.1783984932159424,1.179055773450603,1.179713053685264,1.1803703339199247,1.1810276141545857,1.1816848943892464,1.1823421746239073,1.182999454858568,1.183656735093229,1.18431401532789,1.1849712955625507,1.1856285757972116,1.1862858560318723,1.1869431362665332,1.187600416501194,1.188257696735855,1.1889149769705156,1.1895722572051766,1.1902295374398373,1.1908868176744982,1.191544097909159,1.1922013781438199,1.1928586583784808,1.1935159386131415,1.1941732188478025,1.1948304990824632,1.1954877793171241,1.1961450595517849,1.1968023397864458,1.1974596200211065,1.1981169002557674,1.1987741804904282,1.199431460725089,1.20008874095975,1.2007460211944108,1.2014033014290717,1.2020605816637324,1.2027178618983934,1.203375142133054,1.204032422367715,1.2046897026023757,1.2053469828370367,1.2060042630716974,1.2066615433063583,1.2073188235410193,1.20797610377568,1.208633384010341,1.2092906642450016,1.2099479444796626,1.2106052247143233,1.2112625049489842,1.211919785183645,1.212577065418306,1.2132343456529666,1.2138916258876276,1.2145489061222885,1.2152061863569492,1.2158634665916102,1.2165207468262709,1.2171780270609318,1.2178353072955925,1.2184925875302535,1.2191498677649142,1.2198071479995751,1.2204644282342358,1.2211217084688968,1.2217789887035577,1.2224362689382184,1.2230935491728794,1.22375082940754,1.224408109642201,1.2250653898768618,1.2257226701115227,1.2263799503461834,1.2270372305808444,1.227694510815505,1.228351791050166,1.2290090712848267,1.2296663515194877,1.2303236317541486,1.2309809119888093,1.2316381922234703,1.232295472458131,1.232952752692792,1.2336100329274526,1.2342673131621136,1.2349245933967743,1.2355818736314352,1.236239153866096,1.236896434100757,1.2375537143354178,1.2382109945700785,1.2388682748047395,1.2395255550394002,1.2401828352740611,1.2408401155087219,1.2414973957433828,1.2421546759780435,1.2428119562127045,1.2434692364473652,1.2441265166820261,1.2447837969166868,1.2454410771513478,1.2460983573860087,1.2467556376206694,1.2474129178553304,1.248070198089991,1.248727478324652,1.2493847585593127,1.2500420387939737,1.2506993190286344,1.2513565992632953,1.252013879497956,1.252671159732617,1.253328439967278,1.2539857202019387,1.2546430004365996,1.2553002806712603,1.2559575609059213,1.256614841140582,1.257272121375243,1.2579294016099036,1.2585866818445646,1.2592439620792253,1.2599012423138862],"kdeType":"time","kdePDF":[13.093730186665049,13.09270187817526,13.0906467130704,13.087567592370618,13.083468860788189,13.078356298560912,13.072237110587993,13.065119912889719,13.057014716417266,13.047932908244286,13.03788723017702,13.02689175482483,13.014961859177971,13.002114195744529,12.988366661303191,12.973738363333354,12.958249584188831,12.9419217430859,12.924777355980984,12.906839993417604,12.888134236426449,12.868685630566494,12.848520638199115,12.827666589090828,12.80615162944399,12.78400466945828,12.761255329528963,12.737933885191135,12.714071210922045,12.689698722916207,12.664848320950636,12.639552329459766,12.6138434379416,12.587754640818643,12.561319176878545,12.534570468420977,12.507542060238096,12.48026755855707,12.45278057007348,12.42511464120497,12.397303197694319,12.3
|
||
|
reports.map(mangulate);
|
||
|
|
||
|
var benches = ["hashMap","lazyHashMap","treeMap","lazyTreeMap","ekmett nub","group . sort","nub",];
|
||
|
var ylabels = [[-0,'<a href="#b0">hashMap</a>'],[-1,'<a href="#b1">lazyHashMap</a>'],[-2,'<a href="#b2">treeMap</a>'],[-3,'<a href="#b3">lazyTreeMap</a>'],[-4,'<a href="#b4">ekmett nub</a>'],[-5,'<a href="#b5">group . sort</a>'],[-6,'<a href="#b6">nub</a>'],];
|
||
|
var means = $.scaleTimes([1.215732274359608,0.7542026497750826,0.8307417458265022,0.9851443474133057,1.5538256277149696,0.7364937729645803,4.448000653498998,]);
|
||
|
var xs = [];
|
||
|
var prev = null;
|
||
|
for (var i = 0; i < means[0].length; i++) {
|
||
|
var name = benches[i].split(/\//);
|
||
|
name.pop();
|
||
|
name = name.join('/');
|
||
|
if (name != prev) {
|
||
|
xs.push({ label: name, data: [[means[0][i], -i]]});
|
||
|
prev = name;
|
||
|
}
|
||
|
else
|
||
|
xs[xs.length-1].data.push([means[0][i],-i]);
|
||
|
}
|
||
|
var oq = $("#overview");
|
||
|
o = $.plot(oq, xs, { bars: { show: true, horizontal: true,
|
||
|
barWidth: 0.75, align: "center" },
|
||
|
grid: { borderColor: "#777", hoverable: true },
|
||
|
legend: { show: xs.length > 1 },
|
||
|
xaxis: { max: Math.max.apply(undefined,means[0]) * 1.02 },
|
||
|
yaxis: { ticks: ylabels, tickColor: '#ffffff' } });
|
||
|
if (benches.length > 3)
|
||
|
o.getPlaceholder().height(28*benches.length);
|
||
|
o.resize();
|
||
|
o.setupGrid();
|
||
|
o.draw();
|
||
|
$.addTooltip("#overview", function(x,y) { return $.renderTime(x / means[1]); });
|
||
|
});
|
||
|
$(document).ready(function () {
|
||
|
$(".time").text(function(_, text) {
|
||
|
return $.renderTime(text);
|
||
|
});
|
||
|
$(".citime").text(function(_, text) {
|
||
|
return $.renderTime(text);
|
||
|
});
|
||
|
$(".percent").text(function(_, text) {
|
||
|
return (text*100).toFixed(1);
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="footer">
|
||
|
<div class="body">
|
||
|
<div class="footfirst">
|
||
|
<h2>colophon</h2>
|
||
|
<p>This report was created using the
|
||
|
<a href="http://hackage.haskell.org/package/criterion">criterion</a>
|
||
|
benchmark execution and performance analysis tool.</p>
|
||
|
<p>Criterion is developed and maintained
|
||
|
by <a href="http://www.serpentine.com/blog/">Bryan O'Sullivan</a>.</p>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|