diff --git a/.gitignore b/.gitignore index 8d2f03403d0b11b299998dd032292e860bb4d3d0..4fe20d8ca811ca883188b6ecedac129e0a334af2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,8 @@ profiling/* !profiling/*-header !profiling/kinds.json *.log -*.png +pngs/*.png +pdfs/*.pdf .ipynb_checkpoints/ /.tmp /m_*.tar diff --git a/ilp-measurement.ipynb b/ilp-measurement.ipynb index ce6a712aecd4a8e24ad9635c43f88e9964d22b75..9c33d2fc051b0e533334ae3b76ced818fb849cf7 100644 --- a/ilp-measurement.ipynb +++ b/ilp-measurement.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -39,10 +39,15 @@ }, "outputs": [], "source": [ - "if not os.path.exists('doc'):\n", - " os.mkdir('doc')\n", - "if not os.path.exists('pngs'):\n", - " os.mkdir('pngs')" + "_pngpath, _pdfpath = 'pngs/', 'pdfs/'\n", + "if not os.path.exists(_pngpath):\n", + " os.mkdir(_pngpath)\n", + "if not os.path.exists(_pdfpath):\n", + " os.mkdir(_pdfpath)\n", + "def pngpath(filename):\n", + " return _pngpath + filename + '.png'\n", + "def pdfpath(filename):\n", + " return _pdfpath + filename + '.pdf'" ] }, { @@ -294,7 +299,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 13, "metadata": { "collapsed": false, "scrolled": false @@ -360,7 +365,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": { "collapsed": false, "scrolled": true @@ -378,7 +383,7 @@ "Loaded 1928 record(s) for update_glpk (8x31 unique) ~= 7 run(s)\n", "Loaded 241 record(s) for sw_glpk (7x31 unique) ~= 1 run(s)\n", "Traceback (most recent call last):\n", - " File \"<ipython-input-17-a9613a72d048>\", line 3, in <module>\n", + " File \"<ipython-input-14-a9613a72d048>\", line 3, in <module>\n", " glpk_dats = read_sol_results('glpk')\n", " File \"<ipython-input-11-3738473b7378>\", line 5, in read_sol_results\n", " splitted = split_change_only)\n", @@ -407,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": { "collapsed": true }, @@ -420,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": { "collapsed": false, "scrolled": false @@ -475,8 +480,8 @@ " f.subplots_adjust(hspace=0.2)\n", " plt.setp([a.get_xticklabels() for a in f.axes[:-3]], visible=False)\n", " plt.setp([a.get_yticklabels() for a in f.axes], visible=True)\n", - " plt.savefig('doc/{}.pdf'.format(name), facecolor=f.get_facecolor(), edgecolor='none')\n", - " plt.savefig('pngs/{}.png'.format(name), facecolor=f.get_facecolor(), edgecolor='none')\n", + " plt.savefig(pdfpath(name), facecolor=f.get_facecolor(), edgecolor='none')\n", + " plt.savefig(pngpath(name), facecolor=f.get_facecolor(), edgecolor='none')\n", " except Exception as e:\n", " print 'Error while drawing gen in {0}-{1}: {2}'.format(change, strategy, e)\n", " traceback.print_exc(file=sys.stdout)\n", @@ -486,7 +491,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -535,8 +540,8 @@ " f.subplots_adjust(hspace=0.2)\n", " plt.setp([a.get_xticklabels() for a in f.axes[:-3]], visible=False)\n", " plt.setp([a.get_yticklabels() for a in f.axes], visible=True)\n", - " plt.savefig('doc/{}.pdf'.format(name))\n", - " plt.savefig('pngs/{}.png'.format(name))\n", + " plt.savefig(pdfpath(name))\n", + " plt.savefig(pngpath(name))\n", " except Exception as e:\n", " print 'Error while drawing sol in {0}: {1}'.format(changeName, e)\n", " traceback.print_exc(file=sys.stdout)\n", @@ -546,7 +551,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true @@ -567,8 +572,8 @@ " plt.legend(loc = 'right')\n", " plt.ylabel('seconds')\n", " plt.suptitle('ILP Solving Time - Comparison', fontsize = 16)\n", - " plt.savefig('doc/{}.pdf'.format(name))\n", - " plt.savefig('pngs/{}.png'.format(name))\n", + " plt.savefig(pdfpath(name))\n", + " plt.savefig(pngpath(name))\n", " except Exception as e:\n", " print 'Error while drawing comp-sol in {0}: {1}'.format(changeName, e)\n", " traceback.print_exc(file=sys.stdout)\n", @@ -578,7 +583,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "metadata": { "collapsed": true }, @@ -632,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "metadata": { "collapsed": true }, @@ -659,42 +664,64 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "def setBoxColors(bp, c, c2 = None, apply_to = None, newstyle = False, linewidth=2):\n", - " if newstyle:\n", - " if c2 is None:\n", - " c2 = 'white' if c in ('black', 'blue') else 'black'\n", - " for box in bp['boxes']:\n", - " box.set(facecolor = c, linewidth=linewidth)\n", - " for median in bp['medians']:\n", - " median.set(color=c2, linewidth=linewidth)\n", - " for whisker in bp['whiskers']:\n", - " whisker.set(ls = 'dotted', color='black')\n", - " return\n", - " if c2 is None:\n", - " c2 = c\n", - " set_c = functools.partial(plt.setp, color=c)\n", - " set_c2 = functools.partial(plt.setp, color=c2)\n", - " elems_c = ['boxes', 'caps', 'whiskers', 'fliers']\n", - " elems_c2 = ['medians']\n", - " if apply_to is None:\n", - " # apply to all\n", - " for elem in elems_c:\n", - " set_c(bp[elem])\n", - " for elem in elems_c2:\n", - " set_c2(bp[elem])\n", - " else:\n", - " for elem in elems_c:\n", - " set_c(bp[elem][apply_to])\n", - " for elem in elems_c2:\n", - " set_c2(bp[elem][apply_to])\n", - "strategy_colors = {'noncached':'yellow', 'flush': 'cyan', 'normal': 'blue'}\n", - "strategy_colors.update({k:('black', 'red') for k in ('NormalToFlushed', 'NormalToNoncached', 'FlushedToNoncached')})" + "box_facecolor, median_color, box_edgecolor, whisker_color, average_color = range(5)\n", + "def setBoxColors(bp, colors, apply_to = None, linewidth=2):\n", + " for box in bp['boxes']:\n", + " box.set(facecolor = colors[box_facecolor], linewidth=linewidth, edgecolor= colors[box_edgecolor])\n", + " for median in bp['medians']:\n", + " median.set(color=colors[median_color], linewidth=linewidth)\n", + " for whisker in bp['whiskers']:\n", + " whisker.set(ls = 'dotted', color=colors[whisker_color])\n", + "# strategy: (box.facecolor, median.color, box.edgecolor, whisker.color)\n", + "strategy_colors = {'noncached':('yellow','black','black', 'black', 'black'),\n", + " 'flush': ('cyan','black','black', 'black', 'black'),\n", + " 'normal': ('blue', 'white', 'blue', 'black', 'black')}\n", + "strategy_colors.update({k:('black', 'red') for k in ('NormalToFlushed', 'NormalToNoncached', 'FlushedToNoncached')})\n", + "def draw_average_line(y, c):\n", + " plt.axhline(y, ls = '-', color = c, zorder = 1, linewidth=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "update normal 1.77210853495\n", + "update flush 10.7880389785\n", + "update noncached 9.96998723118\n", + "sw normal 9.44708971546\n", + "sw flush 11.3443110599\n", + "sw noncached 13.7821516129\n", + "res normal 4.0042525181\n", + "res flush 7.77624654378\n", + "res noncached 9.03863824885\n", + "complex normal 2.04215702479\n", + "complex flush 4.21195867769\n", + "complex noncached 5.55057024793\n", + "mixed normal 3.41092375\n", + "mixed flush 22.4315775\n", + "mixed noncached 27.787\n" + ] + } + ], + "source": [ + "for change in kinds['changes']:\n", + " for strategy in kinds['strategies']:\n", + " cdat = racket_dats[change][strategy]\n", + " print change, strategy, np.average(cdat)" ] }, { @@ -706,7 +733,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 31, "metadata": { "collapsed": false, "scrolled": true @@ -716,13 +743,33 @@ "name": "stdout", "output_type": "stream", "text": [ + "Draw_average = True\n", "\n", "java:\n", + " update,normal,flush/,noncached/\n", + " sw,normal/,flush/,noncached/\n", + " res,normal/,flush/,noncached/\n", + " mixed,normal/,flush/,noncached/\n", + "\n", + "racket:\n", " update,normal,flush,noncached\n", " sw,normal,flush,noncached\n", " res,normal,flush,noncached\n", " mixed,normal,flush,noncached\n", "\n", + "larceny:\n", + " update,normal,flush/,noncached/\n", + " sw,normal,flush/,noncached/\n", + " res,normal,flush/,noncached/\n", + " mixed,normal/,flush/,noncached/\n", + "Draw_average = False\n", + "\n", + "java:\n", + " update,normal,flush/,noncached/\n", + " sw,normal/,flush/,noncached/\n", + " res,normal/,flush/,noncached/\n", + " mixed,normal/,flush/,noncached/\n", + "\n", "racket:\n", " update,normal,flush,noncached\n", " sw,normal,flush,noncached\n", @@ -730,42 +777,51 @@ " mixed,normal,flush,noncached\n", "\n", "larceny:\n", - " update,normal,flush,noncached\n", - " sw,normal,flush,noncached\n", - " res,normal,flush,noncached\n", - " mixed,normal,flush,noncached\n" + " update,normal,flush/,noncached/\n", + " sw,normal,flush/,noncached/\n", + " res,normal,flush/,noncached/\n", + " mixed,normal/,flush/,noncached/\n" ] } ], "source": [ - "for (data, name) in ((java_dats, 'java'), (racket_dats, 'racket'), (larceny_dats, 'larceny')):\n", - " sys.stdout.write('\\n{}:'.format(name))\n", - "# change, strategy = 'mixed', 'normal'\n", - "# if True:\n", - " for change in kinds['changes']:\n", - " if change == 'complex':\n", - " continue\n", - " sys.stdout.write('\\n {}'.format(change))\n", - "# if True:\n", - " for strategy in kinds['strategies']:\n", - " sys.stdout.write(','+strategy)\n", - " cdat = data[change][strategy]\n", - " bp = plt.boxplot(cdat.transpose(), patch_artist=True)\n", - " setBoxColors(bp, strategy_colors[strategy], newstyle=True, linewidth=1)\n", - " axes = plt.gca()\n", - " axes.set_ylim([0,50])\n", - "# plt.title('{0} {1} {2}'.format(name.title(), change_to_title(change), strategy_to_titel(strategy)))\n", - " plt.ylabel('seconds')\n", - " plt.xlabel('step')\n", - " if change == 'mixed':\n", - " for i, label in enumerate(axes.get_xticklabels()):\n", - " label.set_visible(i==0 or (i+1) % 10 == 0)\n", - "# plt.gca().tick_params(axis='x', direction='out', top = 'off', bottom = 'on')\n", - " plt.gca().tick_params(axis='x', top = 'off', bottom = 'off')\n", - " plt.savefig('pngs/gen_bp_{0}_{1}_{2}.png'.format(name,change,strategy))\n", - " plt.savefig('doc/gen_bp_{0}_{1}_{2}.pdf'.format(name,change,strategy))\n", - " plt.close()\n", - " print ''" + "for draw_average in (True, False):\n", + " print 'Draw_average = ', draw_average\n", + " for (data, name) in ((java_dats, 'java'), (racket_dats, 'racket'), (larceny_dats, 'larceny')):\n", + " sys.stdout.write('\\n{}:'.format(name))\n", + " # change, strategy = 'mixed', 'normal'\n", + " # if True:\n", + " for change in kinds['changes']:\n", + " if change == 'complex':\n", + " continue\n", + " sys.stdout.write('\\n {}'.format(change))\n", + " # if True:\n", + " for strategy in kinds['strategies']:\n", + " sys.stdout.write(','+strategy)\n", + " cdat = data[change][strategy]\n", + " if cdat.size == 1:\n", + " sys.stdout.write('/')\n", + " continue\n", + " colors = strategy_colors[strategy]\n", + " if draw_average:\n", + " draw_average_line(np.average(cdat),colors[average_color])\n", + " bp = plt.boxplot(cdat.transpose(), patch_artist=True)\n", + " setBoxColors(bp, colors, linewidth=1)\n", + " axes = plt.gca()\n", + " axes.set_ylim([0,50])\n", + " # plt.title('{0} {1} {2}'.format(name.title(), change_to_title(change), strategy_to_titel(strategy)))\n", + " plt.ylabel('seconds')\n", + " plt.xlabel('step')\n", + " if change == 'mixed':\n", + " for i, label in enumerate(axes.get_xticklabels()):\n", + " label.set_visible(i==0 or (i+1) % 10 == 0)\n", + " # plt.gca().tick_params(axis='x', direction='out', top = 'off', bottom = 'on')\n", + " plt.gca().tick_params(axis='x', top = 'off', bottom = 'off')\n", + " fname = 'gen_bp_{0}{1}_{2}_{3}'.format(name,'_avg' if draw_average else '',change,strategy)\n", + " plt.savefig(pdfpath(fname))\n", + " plt.savefig(pngpath(fname))\n", + " plt.close()\n", + " print ''" ] }, { @@ -777,7 +833,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 24, "metadata": { "collapsed": false, "scrolled": false @@ -796,7 +852,7 @@ " sys.stdout.write('\\n {}'.format(change))\n", " cdat = data[change]\n", " bp = plt.boxplot(cdat.transpose(), patch_artist=True)\n", - " setBoxColors(bp, 'black', newstyle=True, linewidth=1)\n", + " setBoxColors(bp, 'black', linewidth=1)\n", " axes = plt.gca()\n", " axes.set_ylim([0,50])\n", "# plt.title('{0} {1} {2}'.format(name.title(), change_to_title(change), strategy_to_titel(strategy)))\n", @@ -807,8 +863,9 @@ " label.set_visible(i==0 or (i+1) % 10 == 0)\n", "# plt.gca().tick_params(axis='x', direction='out', top = 'off', bottom = 'on')\n", " plt.gca().tick_params(axis='x', top = 'off', bottom = 'off')\n", - " plt.savefig('pngs/sol_bp_{0}_{1}.png'.format(name,change))\n", - " plt.savefig('doc/sol_bp_{0}_{1}.pdf'.format(name,change))\n", + " fname = 'sol_bp_{0}_{1}'.format(name,change)\n", + " plt.savefig(pdfpath(fname))\n", + " plt.savefig(pngpath(fname))\n", " plt.close()\n", " print ''" ] @@ -822,7 +879,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -831,49 +888,62 @@ "name": "stdout", "output_type": "stream", "text": [ + "Draw_average = True\n", "\n", " update\n", " res\n", - " sw" + " sw\n", + "Draw_average = False\n", + "\n", + " update\n", + " res\n", + " sw\n" ] } ], "source": [ "width = 0.6\n", "name = 'racket'\n", - "for change in ['update', 'res', 'sw']:#, 'mixed']:\n", - "#change = 'mixed'\n", - "#if True:\n", - " sys.stdout.write('\\n {}'.format(change))\n", - " invisibles = []\n", - " for i, strategy in enumerate(['noncached', 'flush', 'normal']):\n", - "# i, strategy = 1, 'flush'\n", - "# if True:\n", - " y = racket_dats[change][strategy]\n", - " c = strategy_colors[strategy]\n", - " bp = plt.boxplot(y.transpose(), patch_artist=True, positions = np.arange(y.shape[0])*4+i)\n", - " setBoxColors(bp, c, newstyle=True)\n", - "# line, = plt.plot([1,1],c[0]+'-')\n", - " invisibles.append(mpatches.Patch(color=c, label=strategy_to_titel(strategy)))\n", - " axes = plt.gca()\n", - " y_len = y.shape[0]\n", - " axes.set_ylim([0,50])\n", - " plt.ylabel('seconds')\n", - " plt.xlabel('step')\n", - " if change == 'mixed':\n", - " axes.set_xlim([-1,y_len*4+1])\n", - " axes.set_xticklabels(range(0,111,10))\n", - " axes.set_xticks(range(1,y_len*4+41,40))\n", - " else:\n", - " axes.set_xlim([-1,y_len*4-1])\n", - " axes.set_xticklabels(range(1,y_len+1))\n", - " axes.set_xticks(range(1,y_len*4,4))\n", + "for draw_average in (True, False):\n", + " print 'Draw_average = ', draw_average\n", + " for change in ['update', 'res', 'sw']:#, 'mixed']:\n", + " #change = 'mixed'\n", + " #if True:\n", + " sys.stdout.write('\\n {}'.format(change))\n", + " invisibles = []\n", + " if draw_average:\n", + " # draw horizontal lines first\n", + " for strategy in ['noncached', 'flush', 'normal']:\n", + " draw_average_line(np.average(racket_dats[change][strategy]), strategy_colors[strategy][average_color])\n", + " # now draw boxplots in front\n", + " for i, strategy in enumerate(['noncached', 'flush', 'normal']):\n", + " y = racket_dats[change][strategy]\n", + " colors = strategy_colors[strategy]\n", + " bp = plt.boxplot(y.transpose(), patch_artist=True, positions = np.arange(y.shape[0])*4+i)\n", + " setBoxColors(bp, colors)\n", + " # line, = plt.plot([1,1],c[0]+'-')\n", + " invisibles.append(mpatches.Patch(color=colors[box_facecolor], label=strategy_to_titel(strategy)))\n", + " axes = plt.gca()\n", + " y_len = y.shape[0]\n", + " axes.set_ylim([0,50])\n", + " plt.ylabel('seconds')\n", + " plt.xlabel('step')\n", + " if change == 'mixed':\n", + " axes.set_xlim([-1,y_len*4+1])\n", + " axes.set_xticklabels(range(0,111,10))\n", + " axes.set_xticks(range(1,y_len*4+41,40))\n", + " else:\n", + " axes.set_xlim([-1,y_len*4-1])\n", + " axes.set_xticklabels(range(1,y_len+1))\n", + " axes.set_xticks(range(1,y_len*4,4))\n", "\n", - " plt.legend(handles=invisibles, loc='best')\n", + " plt.legend(handles=invisibles, loc='best' if change == 'mixed' else 'upper center', ncol = 3, mode = \"expand\")\n", "\n", - " plt.savefig('pngs/gen_bp_{0}_{1}.png'.format(name,change))\n", - " plt.savefig('doc/gen_bp_{0}_{1}.pdf'.format(name,change))\n", - " plt.close()" + " fname = 'gen_bp_{0}{1}_{2}'.format(name,'_avg' if draw_average else '',change)\n", + " plt.savefig(pdfpath(fname))\n", + " plt.savefig(pngpath(fname))\n", + " plt.close()\n", + " print ''" ] }, { @@ -885,7 +955,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -905,8 +975,9 @@ "# plt.title('{0} {1}'.format(name.title(), change_to_title(change)))\n", " plt.ylabel('seconds')\n", " plt.xlabel('step')\n", - " plt.savefig('pngs/sol_bp_{0}_{1}.png'.format(name,change))\n", - " plt.savefig('doc/sol_bp_{0}_{1}.pdf'.format(name,change))\n", + " fname = 'sol_bp_{0}_{1}'.format(name,change)\n", + " plt.savefig(pdfpath(fname))\n", + " plt.savefig(pngpath(fname))\n", " plt.close()\n", " print ''" ] @@ -923,7 +994,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -959,7 +1030,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 28, "metadata": { "collapsed": false, "scrolled": true @@ -978,7 +1049,7 @@ "dtype([('dir', '<f8'), ('normalBaseline', '<f8'), ('flushedBaseline', '<f8'), ('noncachedBaseline', '<f8'), ('ratioNormalToFlushed', '<f8'), ('ratioNormalToNoncached', '<f8'), ('ratioFlushedToNoncached', '<f8'), ('speedupNormalToFlushed', '<f8'), ('speedupNormalToNoncached', '<f8'), ('speedupFlushedToNoncached', '<f8')])" ] }, - "execution_count": 34, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -998,7 +1069,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 29, "metadata": { "collapsed": false, "scrolled": false @@ -1015,9 +1086,10 @@ "plt.legend(loc = 'best')\n", "plt.ylabel('% computed')\n", "#plt.suptitle('Cache Miss-Rate', fontsize = 16)\n", - "plt.savefig('doc/att_miss.pdf')\n", - "!pdfcrop doc/att_miss.pdf doc/att_miss_cropped.pdf > /dev/null\n", - "plt.savefig('pngs/att_miss.png')\n", + "fname = 'att_miss'\n", + "plt.savefig(pdfpath(fname))\n", + "plt.savefig(pngpath(fname))\n", + "#!pdfcrop doc/att_miss.pdf doc/att_miss_cropped.pdf > /dev/null\n", "plt.close()" ] }, @@ -1032,7 +1104,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1049,9 +1121,9 @@ "plt.legend(loc = 'best')\n", "plt.ylabel('%')\n", "#plt.suptitle('Attribute Ratios', fontsize = 16)\n", - "plt.savefig('doc/att_r.pdf')\n", - "!pdfcrop doc/att_r.pdf doc/att_r_cropped.pdf > /dev/null\n", - "plt.savefig('pngs/att_r.png')\n", + "plt.savefig(pdfpath('att_r'))\n", + "plt.savefig(pngpath('att_r'))\n", + "#!pdfcrop doc/att_r.pdf doc/att_r_cropped.pdf > /dev/null\n", "plt.close()" ] }, @@ -1066,7 +1138,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 31, "metadata": { "collapsed": false, "scrolled": true @@ -1084,9 +1156,9 @@ "plt.legend(loc = 'best')\n", "plt.ylabel('%')\n", "plt.suptitle('Attribute Speed-Ups', fontsize = 16)\n", - "plt.savefig('doc/att_sp.pdf')\n", - "!pdfcrop doc/att_sp.pdf doc/att_sp_cropped.pdf > /dev/null\n", - "plt.savefig('pngs/att_sp.png')\n", + "plt.savefig(pdfpath('att_sp'))\n", + "plt.savefig(pngpath('att_sp'))\n", + "#!pdfcrop doc/att_sp.pdf doc/att_sp_cropped.pdf > /dev/null\n", "plt.close()" ] }, @@ -1099,7 +1171,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 32, "metadata": { "collapsed": false, "scrolled": false @@ -1123,7 +1195,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -1134,7 +1206,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1173,9 +1245,9 @@ "# plt.axes().xaxis.set_minor_formatter(matplotlib.ticker.FormatStrFormatter(\"%s\"))\n", "# plt.axes().tick_params(which='major', pad=20, axis='x')\n", " plt.subplots_adjust(top=0.85)\n", - " plt.savefig('doc/{}.pdf'.format(fname_part))\n", - " !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n", - " plt.savefig('pngs/{}.png'.format(fname_part))\n", + " plt.savefig(pdfpath(fname_part))\n", + " plt.savefig(pngpath(fname_part))\n", + "# !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n", " except Exception as e:\n", " print 'Error while drawing att in {0}: {1}'.format(change, e)\n", " traceback.print_exc(file=sys.stdout)\n", @@ -1185,7 +1257,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1222,7 +1294,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -1244,9 +1316,9 @@ " ax.set_yscale('log')\n", " plt.legend(loc='best')\n", " fname_part = '{0}_{1}{2}'.format(kind,nr,'_log' if log else '')\n", - " plt.savefig('doc/{}.pdf'.format(fname_part))\n", - " !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n", - " plt.savefig('pngs/{}.png'.format(fname_part))\n", + " plt.savefig(pdfpath(fname_part))\n", + " plt.savefig(pngpath(fname_part))\n", + "# !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n", " except Exception as e:\n", " print 'Error while drawing att graph for {0}: {1}'.format(kind, e)\n", " traceback.print_exc(file=sys.stdout)\n", @@ -1256,7 +1328,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1275,7 +1347,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1308,9 +1380,9 @@ " plt.xlabel('Time (Seconds)')\n", "# plt.legend(loc='best')\n", " fname_part = 'memory_{0}-{1}'.format(kind,nr)\n", - " plt.savefig('doc/{}.pdf'.format(fname_part))\n", - " !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n", - " plt.savefig('pngs/{}.png'.format(fname_part))\n", + " plt.savefig(pdfpath(fname_part))\n", + " plt.savefig(pngpath(fname_part))\n", + "# !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n", " except Exception as e:\n", " print 'Error while drawing memory graph for {0}: {1}'.format(kind, e)\n", " traceback.print_exc(file=sys.stdout)\n", @@ -1320,7 +1392,7 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 39, "metadata": { "collapsed": false, "scrolled": true diff --git a/ilp_measurement.py b/ilp_measurement.py index de3a147190dd0a08564d6235228285e404e83ab1..ac996ad2ea05e95ee4d7b042d0b4155d1a4c70be 100644 --- a/ilp_measurement.py +++ b/ilp_measurement.py @@ -578,7 +578,7 @@ def avg(column, *files): with open(f) as fd: r = csv.reader(fd) values = [float(row[int(column)]) for row in r if not row[0].isalpha()] - return sum(values) / float(len(values)) + return sum(values) * 1.0 / len(values) print { f : get_average_value(f) for f in files } @task(name = 'agt') @@ -617,6 +617,27 @@ def att_graph_totals(): for step in sorted(steps): csv.writer(fd).writerow([step]+list(steps[step])) +@task +def sums(f, namecol = 1, stepcol = 2, valuecol = 3, start = '00'): + """ Sums up one column blockwise, where start is the prefix of the name column and marks the begin of a block """ + total, length, last_name = 0.0, 0, '?' + total_total, total_length = 0.0, 0 + with open(f) as fd: + r = csv.reader(fd) + next(r) + for row in r: + if row[stepcol].startswith(start): + last_name = row[namecol] + if length > 0: + print('{0:15}: {1:3}, Sum: {2:8.3f}, Average: {3:.3f}'.format(last_name, length, total, total*1.0/length)) + total_total += total + total_length += length + total, length = 0.0, 0 + else: + total += float(row[valuecol]) + length += 1 + print('Total elements: {0:3}, total sum: {1:3.3f}, total average: {2:.3f}'.format(total_length, total_total, total_total*1.0/total_length)) + if __name__ == '__main__': check()