From b716ae547424e4e4bbda86781a151c31e3a64e67 Mon Sep 17 00:00:00 2001 From: David Gow Date: Mon, 27 Oct 2014 08:14:02 +0800 Subject: [PATCH] David's final changes: more profiler features, fixes. --- src/bezier.cpp | 11 +- src/bezier.h | 11 +- src/debugscript.cpp | 9 +- src/feeling_catty.script | 13 +++ src/grids_are_go.script | 8 ++ src/main.cpp | 14 +-- src/main.h | 3 + src/objectrenderer.cpp | 2 +- src/profiler.cpp | 17 +++ src/profiler.h | 3 + src/view.cpp | 3 + tools/DavidResults.ipynb | 238 +++++++++++++++++++++++++++++++++++++++ 12 files changed, 310 insertions(+), 22 deletions(-) create mode 100644 src/feeling_catty.script create mode 100644 src/grids_are_go.script create mode 100644 tools/DavidResults.ipynb diff --git a/src/bezier.cpp b/src/bezier.cpp index 88d9c1c..83db943 100644 --- a/src/bezier.cpp +++ b/src/bezier.cpp @@ -96,16 +96,13 @@ vector SolveCubic(const BReal & a, const BReal & b, const BReal & c, cons //Debug("%u turning points", turns.size()); for (unsigned i = 1; i < turns.size(); ++i) { - if (tl > max) break; - tu = std::min(turns[i],tu); + //if (tl > max) break; + tu = turns[i]; CubicSolveSegment(roots, a, b, c, d, tl, tu,delta); tl = turns[i]; } - if (tu < max) - { - tu = max; - CubicSolveSegment(roots, a, b, c, d, tl, tu,delta); - } + tu = max; + CubicSolveSegment(roots, a, b, c, d, tl, tu,delta); return roots; } diff --git a/src/bezier.h b/src/bezier.h index 298bcf3..77429cf 100644 --- a/src/bezier.h +++ b/src/bezier.h @@ -20,7 +20,7 @@ namespace IPDF extern std::vector SolveQuadratic(const BReal & a, const BReal & b, const BReal & c, const BReal & min = 0, const BReal & max = 1); - extern std::vector SolveCubic(const BReal & a, const BReal & b, const BReal & c, const BReal & d, const BReal & min = 0, const BReal & max = 1, const BReal & delta = 1e-5); + extern std::vector SolveCubic(const BReal & a, const BReal & b, const BReal & c, const BReal & d, const BReal & min = 0, const BReal & max = 1, const BReal & delta = 1e-9); /** A _cubic_ bezier. **/ struct Bezier @@ -258,8 +258,8 @@ namespace IPDF // Find points of intersection with the rectangle. Debug("Clipping Bezier to BRect %s", r.Str().c_str()); - bool isVerticalLine = (x0 == x1 && x1 == x2 && x2 == x3); - bool isHorizontalLine = (y0 == y1 && y1 == y2 && y2 == y3); + bool isVerticalLine = false;//(x0 == x1 && x1 == x2 && x2 == x3); + bool isHorizontalLine = false;//(y0 == y1 && y1 == y2 && y2 == y3); // Find its roots. @@ -269,11 +269,13 @@ namespace IPDF { std::vector x_intersection = SolveXParam(r.x); intersection.insert(intersection.end(), x_intersection.begin(), x_intersection.end()); + Debug("Number of top intersections: %d", x_intersection.size()); // And for the other side. std::vector x_intersection_pt2 = SolveXParam(r.x + r.w); intersection.insert(intersection.end(), x_intersection_pt2.begin(), x_intersection_pt2.end()); + Debug("Number of bottom intersections: %d", x_intersection_pt2.size()); } // Find its roots. @@ -281,15 +283,18 @@ namespace IPDF { std::vector y_intersection = SolveYParam(r.y); intersection.insert(intersection.end(), y_intersection.begin(), y_intersection.end()); + Debug("Number of left intersections: %d", y_intersection.size()); std::vector y_intersection_pt2 = SolveYParam(r.y+r.h); intersection.insert(intersection.end(), y_intersection_pt2.begin(), y_intersection_pt2.end()); + Debug("Number of right intersections: %d", y_intersection_pt2.size()); } // Merge and sort. intersection.push_back(BReal(0)); intersection.push_back(BReal(1)); std::sort(intersection.begin(), intersection.end()); + Debug("Number of intersections: %d", intersection.size()); std::vector all_beziers; if (intersection.size() <= 2) diff --git a/src/debugscript.cpp b/src/debugscript.cpp index 6d4ba7f..434743d 100644 --- a/src/debugscript.cpp +++ b/src/debugscript.cpp @@ -449,14 +449,15 @@ void DebugScript::PrintPerformance(View * view, Screen * scr) now.view_bounds = view->GetBounds(); // object_count clock delta_clock x Log10(x) y Log10(y) w Log10(w) Size(w) - #ifdef QUADTREE_DISABLED + //#ifdef QUADTREE_DISABLED printf("%d\t%llu\t%llu\t%s\t%s\t%s\t%s\t%s\t%s\t%u\n", now.object_count, (long long unsigned)now.clock, (long long unsigned)(now.clock - m_perf_last.clock), - Str(now.view_bounds.x).c_str(), Str(Log10(Abs(now.view_bounds.x))).c_str(), + "", "", "", "", "", "", 0); + /*Str(now.view_bounds.x).c_str(), Str(Log10(Abs(now.view_bounds.x))).c_str(), Str(now.view_bounds.y).c_str(), Str(Log10(Abs(now.view_bounds.y))).c_str(), Str(now.view_bounds.w).c_str(), Str(Log10(now.view_bounds.w)).c_str(), - (unsigned)Size(now.view_bounds.w)); - #endif + (unsigned)Size(now.view_bounds.w));*/ + //#endif m_perf_last = now; } diff --git a/src/feeling_catty.script b/src/feeling_catty.script new file mode 100644 index 0000000..385754b --- /dev/null +++ b/src/feeling_catty.script @@ -0,0 +1,13 @@ +gpu +lazy +debugfont on +clearperf +printperf +clear +loadsvg svg-tests/cat2.svg +label start +debug meow! +loop 1000 pxzoom 376 187 1 +debug Repeat +goto start +wait diff --git a/src/grids_are_go.script b/src/grids_are_go.script new file mode 100644 index 0000000..3983130 --- /dev/null +++ b/src/grids_are_go.script @@ -0,0 +1,8 @@ +gpu +nolazy +profileon +debugfont on +clear +loadsvg svg-tests/grid.svg +loop 800 pxzoom 376 187 1 +quit diff --git a/src/main.cpp b/src/main.cpp index c9d2362..23aba12 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,7 +26,7 @@ int main(int argc, char ** argv) program_name = argv[0]; //Debug("Main!"); - signal(SIGFPE, sigfpe_handler); + signal(SIGFPE, SIG_IGN);// sigfpe_handler); #if REALTYPE == REAL_IRRAM iRRAM_initialize(argc,argv); #endif @@ -189,12 +189,6 @@ int main(int argc, char ** argv) Rect bounds(b[0],b[1],b[2],b[3]); Screen scr(window_visible); - View view(doc,scr, bounds); - - view.SetLazyRendering(lazy_rendering); - view.SetGPURendering(gpu_rendering); - view.SetGPUTransform(gpu_transform); - if (input_filename != NULL) { #ifdef TRANSFORM_OBJECTS_NOT_VIEW @@ -207,6 +201,12 @@ int main(int argc, char ** argv) { doc.AddText(input_text, bounds.h/Real(2), bounds.x, bounds.y+bounds.h/Real(2)); } + View view(doc,scr, bounds); + + view.SetLazyRendering(lazy_rendering); + view.SetGPURendering(gpu_rendering); + view.SetGPUTransform(gpu_transform); + diff --git a/src/main.h b/src/main.h index a96e933..2ead6f6 100644 --- a/src/main.h +++ b/src/main.h @@ -125,6 +125,7 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1) real_clock_prev = real_clock_now; #endif ++frames; + g_profiler.BeginZone("MainLoop"); g_profiler.BeginZone("scr.Clear()"); scr.Clear(); g_profiler.EndZone(); @@ -227,6 +228,8 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1) g_profiler.BeginZone("scr.Present()"); scr.Present(); g_profiler.EndZone(); + g_profiler.EndZone(); + g_profiler.AddCounter("Total Objects", doc.ObjectCount()); g_profiler.EndFrame(); diff --git a/src/objectrenderer.cpp b/src/objectrenderer.cpp index 9b84ec2..c0c44b6 100644 --- a/src/objectrenderer.cpp +++ b/src/objectrenderer.cpp @@ -385,7 +385,7 @@ void BezierRenderer::RenderUsingGPU(unsigned first_obj_id, unsigned last_obj_id) while (m_indexes.size() > first_index && m_indexes[first_index] < first_obj_id) { unsigned new_index = (first_index + first_obj_id) / 2; - if (new_index < m_indexes.size() && m_indexes[new_index] < first_obj_id) + if (new_index != first_index && new_index < m_indexes.size() && m_indexes[new_index] < first_obj_id) first_index = new_index; else first_index ++; diff --git a/src/profiler.cpp b/src/profiler.cpp index f718637..13595af 100644 --- a/src/profiler.cpp +++ b/src/profiler.cpp @@ -15,6 +15,14 @@ void Profiler::BeginZone(std::string name) m_zone_stack.push(name); } +void Profiler::AddCounter(std::string name, uint64_t amt) +{ + if (!m_counters.count(name)) + m_counters[name] = amt; + else + m_counters[name] += amt; +} + void Profiler::EndZone() { std::string name = m_zone_stack.top(); @@ -38,4 +46,13 @@ void Profiler::EndFrame() it.second.tics_frame = 0; it.second.calls_frame = 0; } + + for (auto& it : m_counters) + { + if (m_enabled) + { + printf("perf_counter\t\"%s\"\t%lu\n", it.first.c_str(), it.second); + } + it.second = 0; + } } diff --git a/src/profiler.h b/src/profiler.h index e406536..ffffae9 100644 --- a/src/profiler.h +++ b/src/profiler.h @@ -21,6 +21,8 @@ namespace IPDF void EndFrame(); void Enable(bool enabled) { m_enabled = enabled; } + + void AddCounter(std::string name, uint64_t amt); private: struct ProfileZone { @@ -33,6 +35,7 @@ namespace IPDF }; std::map m_zones; + std::map m_counters; std::stack m_zone_stack; bool m_enabled; }; diff --git a/src/view.cpp b/src/view.cpp index c660a7e..3d984ee 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -476,6 +476,9 @@ void View::RenderRange(int width, int height, unsigned first_obj, unsigned last_ if (first_obj == last_obj) return; PROFILE_SCOPE("View::RenderRange"); glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 43, -1, "View::RenderRange()"); + + g_profiler.AddCounter("Objects Rendered", last_obj-first_obj); + if (m_render_dirty) // document has changed PrepareRender(); diff --git a/tools/DavidResults.ipynb b/tools/DavidResults.ipynb new file mode 100644 index 0000000..9b271ab --- /dev/null +++ b/tools/DavidResults.ipynb @@ -0,0 +1,238 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "prompt_number": 67 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "qt_mainlooptimes = loadtxt(\"../data/qt-mainlooptimes-novb\")\n", + "qt_genquadchildtimes = loadtxt(\"../data/qt-genquadchild-novb\")\n", + "gmp_mainlooptimes = loadtxt(\"../data/gmp-mainlooptimes\")\n", + "qt_objsrendered = loadtxt(\"../data/qt-objsrendered-novb\")\n", + "gmp_objsrendered = loadtxt(\"../data/gmp-objsrendered\")\n", + "qt_totalobjs = loadtxt(\"../data/qt-totalobjs-novb\")\n", + "gmp_totalobjs = loadtxt(\"../data/gmp-totalobjs\")" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 68 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(qt_mainlooptimes[:800], label=\"Quadtree\")\n", + "plot(gmp_mainlooptimes[:800], label=\"GMP Rationals\")\n", + "xlabel(\"Frame\")\n", + "ylabel(\"Time (ms)\")\n", + "semilogy()\n", + "legend()\n", + "#show()\n", + "savefig(\"frametime.pdf\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 84 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(qt_totalobjs[:800], label=\"In Document\")\n", + "plot(qt_objsrendered[:800], label=\"Rendered\")\n", + "plot(gmp_totalobjs[:800], label=\"In Original Document\")\n", + "xlabel(\"Frame\")\n", + "ylabel(\"Objects\")\n", + "legend()\n", + "#show()\n", + "savefig(\"objects.pdf\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 70 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(qt_totalobjs[:800], qt_mainlooptimes[:800], label=\"Quadtree\")\n", + "plot(gmp_totalobjs[:800], gmp_mainlooptimes[:800], label=\"GMP Rationals\")\n", + "xlabel(\"Total Objects\")\n", + "ylabel(\"Time (ms)\")\n", + "legend()\n", + "#show()\n", + "savefig(\"totalobjectstime.pdf\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nB5q8v1oKnbSxGVQ5qrBgwdPD8/QvFmlkrfH/pqioiE2bNhEdHd3cpbQqTXXSRgVJM+g2uxu+Pr7s\nvXdvc5cibVBr/b+RM9dUQaJfbTWDw+WHOVLROAdXiYg0N+0jERERUxQkIiJiioJERERMUZCIiIgp\nbguSJ554gqFDh2Kz2Vi6dCm7du0iLCwMu93OlClTXL8YSE9Px2azERISwurVqwEoKytj3Lhx2O12\nRowYwcGDB91Vpoi0MC+//DLBwcEMGDAAPz8/hg0bxj//+U/X85GRkXh4eLBnz55a78vOzsbDw8N1\nzqvIyEguvPBCAgMDueKKK/D392fixImuI+dPNHHiRM477zwCAwMJDAwkICCAvn378tRTT5223j17\n9hAXFwfAvn37CA0NNTP7DZo4cSJz5sxxy7jNckuQZGVl8cUXX7B+/XqysrLYvXs3999/P2lpaeTk\n5GAYBqtWraKwsJAFCxawfv16PvzwQ2bMmEFFRQWLFi0iICCAnJwc4uPjSU1NdUeZItLCPPTQQyxd\nupS3336bb775hl27djFjxgyuvfZafvzxR9frLrjgAl577bVa7126dCk9e/Z0PbZYLDz99NNs2bKF\nzZs38/XXX1NaWuo6meOJLBYLSUlJrlOebN26laysLFJSUti5c+cpa967dy87duwA4E9/+hO5ublm\nuqBBJx8w2ZK4JUg++ugjLrvsMsaMGcPIkSMZNWoU+fn52O12wHk0aWZmJnl5eYSGhuLt7Y3VasXP\nz4+CggJyc3OJiYkBnKc3yMzMdEeZItKC7N+/n/nz5/P2229z/vnnu9qjoqKYO3eu6ySMFouFm266\niddff931mtLSUnJzc7nqqqtOOY2a08jX5+TjKn744QcsFgu+vr5A/aepdzgc3HbbbXz33XfExsay\nd+9eOnXqBDjPFfa3v/2NSy+9lIEDBzJ58mTXNVV69+5NSkoKdrud3r178+CDDwLOc3jdc889BAcH\nc+mllzJgwADXWY9P9OijjxIQEIDNZiMmJobCwsJTzre7uSVIDhw4QH5+Pu+88w4vvPACEyZMqPVH\n8vX1paioiOLiYtd1B05ut1qttdr+SK668Cpi/GKauwyRFuWLL76gf//+tdYqatx0001ccsklrseB\ngYG0a9fOtclrxYoVjBo1Ci+v2ofGnbjcOXz4MG+99RZXXnllnfEbhsHcuXMJDAzEz8+PHj168NRT\n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\nlVfw9fXlb3/7G3l5eVRUVJCSksJXX33FoUOHuPvuu5k6dSq33HIL3t7eOBwOli9fznnnndc0nShy\nAm3akjbrf/7nf+jZsye5ublkZmby8MMP4+Pjwy233EJSUhI2m41vv/2W1atX89lnnzFgwAA+/PDD\netcu9uzZQ9++feu0X3jhhezduxeAgQMHkpmZyYsvvsidd94JHF+7mTx5MgsXLmTdunVcc801PPnk\nk6xatYpffvmFjRs3sm7dOvLz85k5cybdunXjueeeIzMzk+DgYDIzM0lJSWmVZ66VPwatkUibtX37\ndq666ioAOnXqxIABA1xX26xZ6+jRowcJCQl06tSJ7du3ExISUu+4/vznP/P999/Xaf/222+5+uqr\n+f7774mIiABgwIABFBYW1nrdtm3bSExMBJxrShdddBG+vr6u6XXp0oWUlJRa75k0aRKzZ88mJiaG\nzp07n3JznYg7aY1E2qz+/fu7dqqXlJTw1Vdf0adPHzw8PHA4HBQVFZGcnMybb75Jeno6HTp0qHez\nFsDQoUMpLCzkgw8+cLWtXbuW7777joiICAzDYMOGDQB8+eWX9O7du9b7+/Xrx7Jly1i3bh1paWmM\nGjWK/v37k5eXB0BRURHXXHMNcDzkVq1aRXh4OJmZmcTFxTF79uxG7R+R30prJNLm1GxOuv3225k8\neTLh4eGUlZWRnJxMjx49GDRoENOnT6d///6EhoYSEhLCOeecwyWXXMLPP/9Mnz596t289f7773Pv\nvfe61gz+3//7f6xevRoPDw8sFgtff/010dHRVFZW8uKLL9Z676JFi7j55pupqqrCYrHwyiuv4Ofn\nR2ZmJuHh4VRVVZGcnAw412ji4+NJTk4mISGBdu3a4XA4mDt3rns7TqQBOvuvSDOprKzEz8/PtQ9F\npLXSpi2RZlBRUUF0dDRxcXHNXYqIaVojERERU7RGIiIipihIRETEFAWJiIiYoiARERFTFCQiImKK\ngkREREz5/5G5CmPVzT9MAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 71 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(qt_objsrendered[:800], qt_mainlooptimes[:800], label=\"Quadtree\")\n", + "plot(gmp_objsrendered[:800], gmp_mainlooptimes[:800], label=\"GMP Rationals\")\n", + "xlabel(\"Objects Rendered\")\n", + "ylabel(\"Time (ms)\")\n", + "legend()\n", + "#show()\n", + "savefig(\"totalobjectstime.pdf\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\njbbV175zpwFpadrrTvvtt83W/VvW3OuvJbDZ8DAajVAqldL39vb2sFgssLNrvJ2ljAxg6FDAwYq/\nhR9/BNwIgdIpAAAKzUlEQVTc6n998mRgwwZAobBeDSSPEDU3hi+/XPP1n35qeAP7ww/AunW3vpG+\nlWnt7ABHR+COOyq/Xvu4lfby8srfRbt29U/r4gK88krTrz9qGjYbHkqlEiaTSfq+vuBQKIBHH/3z\n+z17gOLimm16feXX6m3V2x95pHKDAVR+vfZ51fcnT1Y+GtvGjfW/FhvbOMtwcan8WlDQOPNrLI3V\nv6Z0vTcD1W3dat06GmKxAGVllQ9r2L37xqZrqW+Mmvtv09bPeUDYqC1btoiwsDAhhBB79+4Vjz/+\neK1pevfuLQDwwQcffPAh49G7d+9b3kYrhKh6X21bhBAIDw9HXl4eAGD16tXo27dvM1dFREQAYLPh\nQUREtstmP6pLRES2q0WGR2u6gPDhhx9GQEAAAgICMG3aNBQUFMDX1xcajQbh4eGo2jFMSkqCSqWC\nj48Pkm38w/P79+9HwP/G8pDTn5KSEowdOxYajQYhISEoLCxstj5cT/X+5ebm4t5775XW4ebNmwG0\nzP6Vl5fjmWeegUajgZeXF3bs2NGq1l9d/cvNzUWPHj1axfqrqKjA1KlT4evrCz8/P/z000/WXX+3\nfNakGWzZskU8++yzQggh9u3bJ0aOHNnMFd2ckpIS4eHhUaNt+PDhIj09XQghxMyZM8Xnn38uzpw5\nIwYOHCjMZrMoKioSAwcOFGVlZc1RcoPeeOMNMXDgQOHj4yOEkNefxYsXi9jYWCGEEB9//LGYO3du\ns/WjPtf2LykpSSxevLjGNC21f6tXrxbz5s0TQghx4cIF0bNnTzFixIhWs/7q6t/KlStbzfrbtm2b\nmDZtmhBCCIPBIEaMGGHV9dci9zxaywWEBw8eRHFxMYKCghAYGIh9+/YhJycHGo0GABAcHAy9Xo+s\nrCyo1Wo4OjpCqVTCxcVF+iCBrXFxccHWrVuldzhy+lN9vep0OuirPkttQ67tX3Z2NpKTk+Hv74/p\n06fj8uXL+O6771pk/8aPH49X/ndhhsVigaOjY6taf3X1rzWtv5EjR+Lf//43AODXX39Fp06dkJ2d\nbbX11yLDo74LCFuadu3aITIyErt27cLy5csxefLkGq87OzujqKgIRqMRHTp0qNVui8aMGQOHaldd\nimqfx2ioP9XXq6328dr+eXl54e2330Z6ejoeeOABxMbGwmQytcj+tWvXDu3bt4fJZML48eMRFxdX\n4/+qpa+/a/v36quvwtPTs9WsP6ByWxgWFoa5c+di8uTJVv3/a5HhcaMXENq6vn37SoHRp08fdO7c\nGefOnZNeNxqN6NixY63+mkwmdOrUqcnrvRnV18v1+nNte1WbrRs9ejQ8PDyk57m5uS26f6dOncIj\njzyC0NBQTJw4sdWtv+r9mzBhQqtbfwCwZs0aHD58GNOnT0dpaanU3tjrr+VtcQGo1WqkpKQAAPbt\n24dBgwY1c0U3Z/Xq1dKAj7///jtMJhOGDRuG9PR0AEBqaio0Gg08PT3x7bffoqysDEVFRcjPz4fb\njV7m3Mw8PDxuuD/V12vVtLZOp9MhKysLAKDX6zFkyJAW279z585h2LBhePPNNxEWFgagda2/uvrX\nmtbf+vXr8dprrwEA2rZtC3t7ewwZMsR66896p2+sx2KxiJkzZ4qhQ4eKoUOHisOHDzd3STelvLxc\nPP3008LPz0/4+fmJvXv3iiNHjgh/f3/h4+Mjpk2bJiwWixCi8sSsSqUSgwcPFlu3bm3myq/v+PHj\n0gllOf0pLi4W48ePF76+viIwMFCcO3eu2fpwPdX79/333wu1Wi20Wq2YOHGiMJlMQoiW2b85c+aI\n7t27C61WKz0OHjzYatZfXf3bt29fq1l/xcXF4sknnxQajUb4+PiIL774wqr/f7xIkIiIZGuRh62I\niKh5MTyIiEg2hgcREcnG8CAiItkYHkREJBvDg4iIZGN4UIt1/PhxjB07FgEBAfD19cXs2bNx+fJl\nAEBYWBiys7NrTH/u3DnMnj1b1jLKysqwatWqG5o2JiYG/fr1k0ZoHTRoEOLj42Utry4DBw685XlY\nc350e2J4UItUUlKCkSNH4oUXXkBaWhp2794NLy8vTJw4EQCgqOPG2d26dcP7778vazlnzpzBypUr\nb2hahUKB+fPnIy0tDWlpaThw4AA+/PBDmxu6m6gxODQ8CZHtSU5OhlarhUqlktpCQ0ORmJiIX3/9\nFQDw2muv4eLFixBCICkpCfb29pg4cSL27t2L9PR0vPTSS7C3t0fv3r3x73//G+Xl5Xj22Wdx8uRJ\nmM1mvPfee1i1ahV+/vlnxMXFISAgAPPnz8cdd9yBO++8E5999hnat29fo67q19wWFhaivLwcbdu2\nRVFREaZNm4YLFy4AAN599124ubmhT58+8PX1xeHDh9GtWzds2bIFpaWlePrpp1FYWIjevXujoqIC\nAPDDDz9g7ty5EEKgc+fO+PDDD5GTk4OFCxfCyckJf/3rX9GzZ89a/TKbzXXOj+iWWPNyeSJrefPN\nN8WSJUtqtU+cOFEYDAYRFhYmVqxYIYQQIiUlRYwZM0b8+uuvwtvbWwghRJ8+fcT58+eFEEL885//\nFElJSeKdd94RUVFRQgghfvnlF7F06dIaPxMZGSmWLFkiLBaL2LZtmzh58mSNZS9atEj07dtX+Pv7\niwceeED4+fmJr776SgghxPPPPy8SExOFEJVDtvj6+gohhLC3txenT58WQgihVqvFvn37xOLFi8VL\nL70khBDi0KFDonfv3kIIIby8vER+fr4QQohVq1aJ6OhoYTAYhLu7uxCictievn371upXffMjuhXc\n86AWqUePHvjuu+9qtRcUFOD//u//AAD+/v4AAG9vb0RGRkrTnD9/HmfPnsX48eMBVB4Ce+yxx1BY\nWIjg4GAAlfftmDt3rrQXAwAvvvgiXn31VQQGBqJHjx7w8vKqseyqw1Z//etfkZOTgwkTJqBPnz4A\nKvca0tLS8MknnwAALl68CAC4++670aNHDwBAz549UVpaisOHD+Pxxx8HAPTr1w9dunQBAOTn52PW\nrFkAKu+K17dvX2maqn6dOXOmVr/++9//1jk/olvBcx7UIo0cORJfffWVNCIqAKxcuRJdunTB/fff\nD6ByxGUAyMjIgLu7uzTd3XffjXvvvRdffPEF0tLS8MILL+DRRx/FgAEDpPkdO3YMzzzzTI17xWzY\nsAFhYWH45ptv4OrqihUrVtSqS/zvsNXDDz+MF154ARMmTIAQAgMGDMC8efOQlpYmzQeo+9yMq6sr\nMjMzAQBHjx6Vzpn0798f69evR1paGuLj4zF8+HAAfw57X1+/6psf0a3gnge1SO3atcOOHTswb948\n/PHHH7h69Src3d2xadMmaZqvv/4aa9asgaOjIz788EOUl5cDqNxgJyQk4PHHH4fFYkGHDh2wbt06\neHt7Y+rUqdBqtaioqEBCQgK6du0Ks9mMqKgojB49GtOnT0e7du1gb29fZ3hUD4OpU6fik08+wfLl\nyxEdHY1p06ZhxYoVMBqNiI2NrTV91fczZ86U7kXdq1cv3HXXXQCAxMREPPPMM7h69Srs7OywatUq\n/Pbbb9I87Ozsrtuva+dHdCs4qi7dNn755RdMnz5dur8BEd08Hrai28Lp06cxefJkjB49urlLIWoV\nuOdBRESycc+DiIhkY3gQEZFsDA8iIpKN4UFERLIxPIiISDaGBxERyfb/bwAUZKQppBgAAAAASUVO\nRK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 72 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(qt_mainlooptimes[:800], label=\"Quadtree\")\n", + "#plot(qt_genquadchildtimes[:800], label=\"Child Generation\")\n", + "xlabel(\"Frame\")\n", + "ylabel(\"Time (ms)\")\n", + "legend()\n", + "#show()\n", + "savefig(\"qtframetime.pdf\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nRU5ErkJggg==\n", + "text": [ + "" + ] + } + ], + "prompt_number": 83 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print sum(qt_genquadchildtimes) / sum(qt_mainlooptimes)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.237412858249\n" + ] + } + ], + "prompt_number": 74 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print sum(gmp_mainlooptimes) / sum(qt_mainlooptimes)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2127.35360186\n" + ] + } + ], + "prompt_number": 75 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 75 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 75 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file -- 2.20.1