SetChartCacheControl(); $in = WhiteListIn(); $WhiteListTests = WhiteListUnique('test.csv', $in); $WhiteListLangs = WhiteListUnique('lang.csv', $in); // DATA //////////////////////////////////////////////////// list($Mark, $valid) = ValidMark(TRUE); list($Sort, $valid) = ValidSort($valid); list($Test, $valid) = ValidTests($WhiteListTests, $valid); list($BackText, $valid) = ValidLangs($WhiteListLangs, $valid); list($Ratios, $valid) = ValidMatrix('r', 1, $valid); for ($i = 0; $i < sizeof($Ratios); $i++) { $Ratios[$i] = log10($Ratios[$i]); } // CHART ////////////////////////////////////////////////// $chart = new WideBarChart(); $chart->yAxis(log10axis(axis1000())); if ($valid) { $chart->backgroundText($BackText); $chart->bars($Ratios); $chart->notice($Mark); $chart->xAxisLegend('selected ' . $Test[0] . ' programs'); if ($Sort == 'fullcpu') { $titletext = $Test[0] . ' - How many times slower? (CPU secs)'; $yaxistext = 'program time ÷ fastest program time'; } elseif ($Sort == 'kb') { $titletext = $Test[0] . ' - How many times more memory?'; $yaxistext = 'program memory-used ÷ least memory-used'; } elseif ($Sort == 'elapsed') { $titletext = $Test[0] . ' - How many times slower? (Elapsed secs)'; $yaxistext = 'program time ÷ fastest program time'; } elseif ($Sort == 'gz') {
$kb[] = log10($Matrix[$i + RATIOS_KB]); $gz[] = log10($Matrix[$i + RATIOS_GZ]); } } unset($Matrix); sort($secs); sort($kb); sort($gz); $n = sizeof($secs); // CHART ////////////////////////////////////////////////// $chart = new ComparisonChart(); $chart->yo = $chart->h / 2; $scale = 45.0; $shift = 0.0; $chart->yAxis(log10axis(axis3_10()), $scale, $shift); $chart->yAxis(log10axis(axis3_10_Mirror()), $scale, $shift, MIRROR_AXIS); if ($valid) { // TIME PANEL $x = $chart->xo; $x1 = $x; $chart->barwidth = 5; $x = $chart->bars(DARK_GRAY, $secs); $label = 'Time'; $z = $x1 + ($x - $x1 - strlen($label) * CHAR_WIDTH_2) / 2.0; ImageString($chart->im, 2, $z, $chart->h - 30, $label, $chart->colour[BLACK]); ImageString($chart->im, 2, $z, 23, $label, $chart->colour[BLACK]); // MEMORY USE PANEL $x += 20; $x1 = $x; $chart->xo = $x; $chart->barspace = 4 + $chart->barspace;
list($LangName, $valid) = ValidLangs($WhiteListLangs, TRUE); list($Shapes, $valid) = ValidMatrix('s', 1, $valid); for ($i = 0; $i < sizeof($Shapes); $i++) { $Shapes[$i] = log10($Shapes[$i]); } list($Centers, $valid) = ValidMatrix('c', 1, $valid); for ($i = 0; $i < sizeof($Centers); $i++) { $Centers[$i] = log10($Centers[$i]); } // CHART ////////////////////////////////////////////////// $w = 150; $h = 120; $xo = 48; $yo = MARGIN; $chart = new ShapeChart(); if ($valid) { $chart->yAxis(log10axis(axis3_5_10())); $chart->xAxis(log10axis(axisOneTen()), 101.0); $chart->frame(); $chart->title_($LangName[0], 2, CHAR_WIDTH_2); // hard-code a shortest programs example if (!isset($LangName[0])) { $chart->title_('Shortest C++', 2, CHAR_WIDTH_2); } $chart->shapes($Shapes, $Centers); $label = 'concise'; ImageString($chart->im, 2, $xo, $h - $yo + 4, $label, $chart->colour[DARK_GRAY]); $label = 'fast'; ImageStringUp($chart->im, 2, 30, $h, $label, $chart->colour[DARK_GRAY]); } $chart->complete();
$WhiteListLangs = WhiteListUnique('lang.csv', $in); $WhiteListLangs['0'] = array('0', '', '', '', 0, java, '0', ''); // DATA LAYOUT /////////////////////////////////////////////////// define('STATS_SIZE', 8); define('STAT_MIN', 0); define('STAT_XLOWER', 1); define('STAT_LOWER', 2); define('STAT_MEDIAN', 3); define('STAT_UPPER', 4); define('STAT_XUPPER', 5); define('STAT_MAX', 6); define('STATS_N', 7); // DATA //////////////////////////////////////////////////// list($Mark, $valid) = ValidMark(TRUE); list($BackText, $valid) = ValidLangs($WhiteListLangs, $valid); list($Stats, $valid) = ValidMatrix('s', STATS_SIZE, $valid); for ($i = 0; $i < sizeof($Stats); $i++) { $Stats[$i] = log10($Stats[$i]); } // CHART ///////////////////////////////////////////////////// $chart = new KDEChart(); $chart->yAxis(log10axis(axis500())); if ($valid) { $chart->backgroundText($BackText); $chart->boxAndWhiskers($Stats); $chart->notice($Mark); } $chart->yAxisLegend('program cpu / lowest program cpu'); $chart->title('How many times more CPU?'); $chart->frame(); $chart->complete();