{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "4730bc83-62e5-4223-bd19-ea615d6993b6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import contextlib\n", "import ctypes\n", "import io\n", "import numpy as np\n", "import os\n", "import pandas as pd\n", "import re\n", "import sys\n", "import tempfile\n", "from IPython.display import Image\n", "from lets_plot import *\n", "\n", "LetsPlot.setup_html()\n", "\n", "variant = \"release\"\n", "\n", "MVG_EXPORT_DATA = []\n", "\n", "\n", "# best-effort: flush all C stdio buffers\n", "try:\n", " _libc = ctypes.CDLL(None)\n", " _fflush_all = lambda: _libc.fflush(None)\n", "except Exception:\n", " _fflush_all = lambda: None\n", "\n", "\n", "def capture_c_output(fn, *args, **kwargs) -> str:\n", " \"\"\"\n", " Run fn(*args, **kwargs) and capture anything written to C stdout/stderr.\n", " Returns a single string with stdout followed by stderr.\n", " \"\"\"\n", " # Flush Python and C buffers before swapping FDs\n", " sys.stdout.flush(); sys.stderr.flush(); _fflush_all()\n", "\n", " # Duplicate current stdout/stderr FDs\n", " old_out_fd = os.dup(1)\n", " old_err_fd = os.dup(2)\n", "\n", " with tempfile.TemporaryFile() as tmp_out, tempfile.TemporaryFile() as tmp_err:\n", " try:\n", " # Redirect FD 1 and 2 to our temp files\n", " os.dup2(tmp_out.fileno(), 1)\n", " os.dup2(tmp_err.fileno(), 2)\n", "\n", " # Run the function (which may call into C)\n", " fn(*args, **kwargs)\n", "\n", " # Flush again before restoring\n", " sys.stdout.flush(); sys.stderr.flush(); _fflush_all()\n", " finally:\n", " # Restore original FDs\n", " os.dup2(old_out_fd, 1)\n", " os.dup2(old_err_fd, 2)\n", " os.close(old_out_fd)\n", " os.close(old_err_fd)\n", "\n", " # Read captured data\n", " tmp_out.seek(0); tmp_err.seek(0)\n", " out = tmp_out.read().decode(\"utf-8\", errors=\"replace\")\n", " err = tmp_err.read().decode(\"utf-8\", errors=\"replace\")\n", "\n", " return out + err\n", " \n", "\n", "def _parse_and_store_output(output_text, file_name, n, solid, scale, void):\n", " \"\"\"\n", " Helper function to parse output, including timestamps with minutes,\n", " and append to the global data list.\n", " \"\"\"\n", " \n", " \n", " def to_seconds(time_str):\n", " \"\"\"\n", " Converts a complex time string (including minutes) into total seconds.\n", " This version correctly prioritizes specific units like 'ms' over 'm'.\n", " \"\"\"\n", " if not time_str:\n", " return None\n", " time_str = time_str.strip()\n", " \n", " # --- Check for the most specific units FIRST ---\n", " if 'ms' in time_str:\n", " return float(time_str.replace('ms', '').strip()) / 1000\n", " if 'us' in time_str:\n", " return float(time_str.replace('us', '').strip()) / 1_000_000\n", " if 'ns' in time_str:\n", " return float(time_str.replace('ns', '').strip()) / 1_000_000_000\n", " \n", " # --- Now, check for the composite minute/second format ---\n", " if 'm' in time_str:\n", " total_seconds = 0\n", " parts = time_str.split('m')\n", " minutes = float(parts[0].strip())\n", " total_seconds += minutes * 60\n", " \n", " # If there's a seconds part after 'm', add it\n", " if len(parts) > 1 and parts[1].strip():\n", " seconds_str = parts[1].replace('s', '').strip()\n", " if seconds_str:\n", " total_seconds += float(seconds_str)\n", " return total_seconds\n", " \n", " # --- Finally, check for standalone seconds ---\n", " if 's' in time_str:\n", " return float(time_str.replace('s', '').strip())\n", " \n", " # Fallback for unitless numbers (should not happen with this log format)\n", " try:\n", " return float(time_str)\n", " except ValueError:\n", " return None\n", " \n", " \n", " if 'ms' in time_str: return float(time_str.replace('ms', '')) / 1000\n", " if 'us' in time_str: return float(time_str.replace('us', '')) / 1_000_000\n", " if 'ns' in time_str: return float(time_str.replace('ns', '')) / 1_000_000_000\n", " if 's' in time_str: return float(time_str.replace('s', ''))\n", " \n", " try:\n", " return float(time_str)\n", " except ValueError:\n", " return None\n", "\n", " \n", " map_pattern = re.compile(r\"(.+?): exportMvg\\(\\)\\: plot mapped to canvas\")\n", " paint_pattern = re.compile(r\"(.+?): exportMvg\\(\\)\\: plot painted\")\n", " snapshot_pattern = re.compile(r\"(.+?): exportMvg\\(\\)\\: snapshot taken\")\n", " \n", " map_match = map_pattern.search(output_text)\n", " paint_match = paint_pattern.search(output_text)\n", " snapshot_match = snapshot_pattern.search(output_text)\n", "\n", " mapping_time = to_seconds(map_match.group(1) if map_match else None)\n", " paint_time = to_seconds(paint_match.group(1) if paint_match else None)\n", " snapshot_time = to_seconds(snapshot_match.group(1) if snapshot_match else None)\n", " \n", " MVG_EXPORT_DATA.append({\n", " \"file_name\": file_name,\n", " \"n\": n,\n", " \"solid\": solid,\n", " \"scale\": scale,\n", " \"void\": void,\n", " \"mapping_time\": mapping_time,\n", " \"paint_time\": paint_time - mapping_time,\n", " \"snapshot_time\": snapshot_time - paint_time,\n", " \"total_time\": snapshot_time\n", " })\n", " \n", "\n", "def save_mvg(ns, solid, scale, void=False):\n", " \"\"\"\n", " Saves plots and automatically captures and parses the ggsave output\n", " by capturing both stdout and stderr.\n", " \"\"\"\n", "\n", " # show demo plot\n", " p_n(100, solid, void).show()\n", " \n", " i = 1\n", " \n", " for n in ns:\n", " if solid:\n", " name = \"solid_\" + str(n)\n", " else:\n", " name = \"stroked_\" + str(n)\n", "\n", " p = p_n(n, solid, void)\n", "\n", " file_name = f\"{name}@{scale}x.mvg\" if scale != 1 else f\"{name}.mvg\"\n", "\n", " captured_output = capture_c_output(ggsave, p, file_name, scale=scale)\n", " \n", " print(str(i) + \" of \" + str(len(ns)) + \" (n=\" + str(n) + \", solid=\" + str(solid) + \", void=\" + str(void) + \", scale=\" + str(scale) + \")\\n\" + captured_output)\n", " \n", " _parse_and_store_output(captured_output, file_name, n, solid, scale, void)\n", " i = i + 1\n", "\n", "def p_n(n, solid, void):\n", " np.random.seed(42)\n", " \n", " x = np.random.uniform(size=n)\n", " y = np.random.uniform(size=n)\n", " v = np.random.normal(size=n)\n", " \n", " p = ggplot({'x': x, 'y': y, 'v': v}, aes('x', 'y', fill='x'))\n", " \n", " if void:\n", " theme = theme_void()\n", " show_legend = False\n", " else:\n", " theme = geom_blank()\n", " show_legend = True\n", "\n", " if solid:\n", " l = geom_point(show_legend=show_legend)\n", " else:\n", " l = geom_point(shape=1, show_legend=show_legend)\n", "\n", " return p + l + theme\n", "\n" ] }, { "cell_type": "markdown", "id": "5ce5c772-ddb8-4011-9b2b-a9e887520d64", "metadata": {}, "source": [ "# Solid" ] }, { "cell_type": "code", "execution_count": 2, "id": "f3497a12-bb65-4b22-ad34-823369bd7636", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1 of 5 (n=1000, solid=True, void=False, scale=1)\n", "0s: exportMvg(): plotSpec parsed\n", "521.833us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "13.296250ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "151.704875ms: exportMvg(): plot mapped to canvas\n", "152.365042ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "156.480833ms: exportMvg(): plot painted\n", "290.737542ms: exportMvg(): snapshot taken\n", "294.542167ms: exportMvg(): bitmap extracted\n", "295.902083ms: exportMvg(): MVG extracted, length=123494\n", "296.227333ms: exportMvg(): resources disposed\n", "\n", "2 of 5 (n=5000, solid=True, void=False, scale=1)\n", "208ns: exportMvg(): plotSpec parsed\n", "60.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "22.710958ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "339.750458ms: exportMvg(): plot mapped to canvas\n", "340.359250ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "360.405291ms: exportMvg(): plot painted\n", "573.116958ms: exportMvg(): snapshot taken\n", "576.791666ms: exportMvg(): bitmap extracted\n", "581.003041ms: exportMvg(): MVG extracted, length=562493\n", "581.226500ms: exportMvg(): resources disposed\n", "\n", "3 of 5 (n=10000, solid=True, void=False, scale=1)\n", "250ns: exportMvg(): plotSpec parsed\n", "49.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "43.872875ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "610.093625ms: exportMvg(): plot mapped to canvas\n", "610.728333ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "662.805916ms: exportMvg(): plot painted\n", "984.507125ms: exportMvg(): snapshot taken\n", "988.148ms: exportMvg(): bitmap extracted\n", "996.173541ms: exportMvg(): MVG extracted, length=1110822\n", "996.544958ms: exportMvg(): resources disposed\n", "\n", "4 of 5 (n=20000, solid=True, void=False, scale=1)\n", "41ns: exportMvg(): plotSpec parsed\n", "77.625us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "93.194541ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "1.281383708s: exportMvg(): plot mapped to canvas\n", "1.281957166s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "1.361364375s: exportMvg(): plot painted\n", "1.938448250s: exportMvg(): snapshot taken\n", "1.942208250s: exportMvg(): bitmap extracted\n", "1.958994041s: exportMvg(): MVG extracted, length=2206404\n", "1.961260458s: exportMvg(): resources disposed\n", "\n", "5 of 5 (n=50000, solid=True, void=False, scale=1)\n", "333ns: exportMvg(): plotSpec parsed\n", "67.833us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "802.818083ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "5.310952208s: exportMvg(): plot mapped to canvas\n", "5.313709625s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "5.526666250s: exportMvg(): plot painted\n", "7.047491208s: exportMvg(): snapshot taken\n", "7.051464s: exportMvg(): bitmap extracted\n", "7.095691125s: exportMvg(): MVG extracted, length=5495800\n", "7.097929250s: exportMvg(): resources disposed\n", "\n" ] } ], "source": [ "save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=True, scale=1)" ] }, { "cell_type": "code", "execution_count": 3, "id": "dd9bf1af-0638-4048-b1fe-3a7776c720e4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1 of 5 (n=1000, solid=True, void=False, scale=2)\n", "125ns: exportMvg(): plotSpec parsed\n", "53.458us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "13.230625ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "204.641167ms: exportMvg(): plot mapped to canvas\n", "206.909292ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "211.248667ms: exportMvg(): plot painted\n", "524.073583ms: exportMvg(): snapshot taken\n", "558.849333ms: exportMvg(): bitmap extracted\n", "564.902333ms: exportMvg(): MVG extracted, length=123494\n", "565.559333ms: exportMvg(): resources disposed\n", "\n", "2 of 5 (n=5000, solid=True, void=False, scale=2)\n", "167ns: exportMvg(): plotSpec parsed\n", "81.042us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "22.629ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "348.808417ms: exportMvg(): plot mapped to canvas\n", "350.838125ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "373.865959ms: exportMvg(): plot painted\n", "871.862167ms: exportMvg(): snapshot taken\n", "887.376500ms: exportMvg(): bitmap extracted\n", "892.400750ms: exportMvg(): MVG extracted, length=562495\n", "892.695334ms: exportMvg(): resources disposed\n", "\n", "3 of 5 (n=10000, solid=True, void=False, scale=2)\n", "209ns: exportMvg(): plotSpec parsed\n", "73.125us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "45.167334ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "692.640042ms: exportMvg(): plot mapped to canvas\n", "696.254459ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "760.028167ms: exportMvg(): plot painted\n", "1.479292417s: exportMvg(): snapshot taken\n", "1.495355459s: exportMvg(): bitmap extracted\n", "1.503527792s: exportMvg(): MVG extracted, length=1110820\n", "1.504090500s: exportMvg(): resources disposed\n", "\n", "4 of 5 (n=20000, solid=True, void=False, scale=2)\n", "41ns: exportMvg(): plotSpec parsed\n", "67.541us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "93.382291ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "1.259610416s: exportMvg(): plot mapped to canvas\n", "1.262181666s: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "1.349311500s: exportMvg(): plot painted\n", "2.599702541s: exportMvg(): snapshot taken\n", "2.614853500s: exportMvg(): bitmap extracted\n", "2.631417458s: exportMvg(): MVG extracted, length=2206406\n", "2.632439083s: exportMvg(): resources disposed\n", "\n", "5 of 5 (n=50000, solid=True, void=False, scale=2)\n", "250ns: exportMvg(): plotSpec parsed\n", "111.292us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "230.238584ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "3.235150792s: exportMvg(): plot mapped to canvas\n", "3.237281375s: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "3.443972167s: exportMvg(): plot painted\n", "6.773627542s: exportMvg(): snapshot taken\n", "6.790757709s: exportMvg(): bitmap extracted\n", "6.840090834s: exportMvg(): MVG extracted, length=5495800\n", "6.842326167s: exportMvg(): resources disposed\n", "\n" ] } ], "source": [ "save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=True, scale=2)" ] }, { "cell_type": "markdown", "id": "ff0ffd6b-4f2b-4f87-bd43-1e914a5744aa", "metadata": {}, "source": [ "# Stroked" ] }, { "cell_type": "code", "execution_count": 4, "id": "50718e4c-5335-4c94-9008-ca7f10713065", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1 of 5 (n=1000, solid=False, void=False, scale=1)\n", "250ns: exportMvg(): plotSpec parsed\n", "89.083us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "30.318791ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "489.949750ms: exportMvg(): plot mapped to canvas\n", "490.565ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "518.203375ms: exportMvg(): plot painted\n", "657.718416ms: exportMvg(): snapshot taken\n", "666.083208ms: exportMvg(): bitmap extracted\n", "672.138541ms: exportMvg(): MVG extracted, length=201285\n", "672.435166ms: exportMvg(): resources disposed\n", "\n", "2 of 5 (n=5000, solid=False, void=False, scale=1)\n", "83ns: exportMvg(): plotSpec parsed\n", "74.5us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "33.366458ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "401.640208ms: exportMvg(): plot mapped to canvas\n", "402.380375ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "435.786833ms: exportMvg(): plot painted\n", "753.048542ms: exportMvg(): snapshot taken\n", "757.01ms: exportMvg(): bitmap extracted\n", "764.667875ms: exportMvg(): MVG extracted, length=951649\n", "765.469292ms: exportMvg(): resources disposed\n", "\n", "3 of 5 (n=10000, solid=False, void=False, scale=1)\n", "250ns: exportMvg(): plotSpec parsed\n", "87.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "44.163708ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "709.910583ms: exportMvg(): plot mapped to canvas\n", "710.514ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "809.035541ms: exportMvg(): plot painted\n", "1.435448500s: exportMvg(): snapshot taken\n", "1.439370375s: exportMvg(): bitmap extracted\n", "1.454707416s: exportMvg(): MVG extracted, length=1889111\n", "1.455353416s: exportMvg(): resources disposed\n", "\n", "4 of 5 (n=20000, solid=False, void=False, scale=1)\n", "84ns: exportMvg(): plotSpec parsed\n", "73.417us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "110.986375ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "1.334035167s: exportMvg(): plot mapped to canvas\n", "1.334754834s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "1.498602750s: exportMvg(): plot painted\n", "2.481634584s: exportMvg(): snapshot taken\n", "2.485502584s: exportMvg(): bitmap extracted\n", "2.514975167s: exportMvg(): MVG extracted, length=3762798\n", "2.516456459s: exportMvg(): resources disposed\n", "\n", "5 of 5 (n=50000, solid=False, void=False, scale=1)\n", "42ns: exportMvg(): plotSpec parsed\n", "71.417us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "1.197814500s: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "4.460475084s: exportMvg(): plot mapped to canvas\n", "4.461300s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "4.814341542s: exportMvg(): plot painted\n", "7.199791250s: exportMvg(): snapshot taken\n", "7.204037584s: exportMvg(): bitmap extracted\n", "7.292499084s: exportMvg(): MVG extracted, length=9387029\n", "7.293668209s: exportMvg(): resources disposed\n", "\n" ] } ], "source": [ "save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=False, scale=1)" ] }, { "cell_type": "code", "execution_count": 5, "id": "a66a566c-5cee-4695-a34e-270c4317ec9e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1 of 10 (n=1000, solid=False, void=False, scale=2)\n", "334ns: exportMvg(): plotSpec parsed\n", "204.459us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "31.818167ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "229.399167ms: exportMvg(): plot mapped to canvas\n", "232.651084ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "240.953834ms: exportMvg(): plot painted\n", "604.786292ms: exportMvg(): snapshot taken\n", "620.824542ms: exportMvg(): bitmap extracted\n", "622.594542ms: exportMvg(): MVG extracted, length=201285\n", "622.928625ms: exportMvg(): resources disposed\n", "\n", "2 of 10 (n=2000, solid=False, void=False, scale=2)\n", "83ns: exportMvg(): plotSpec parsed\n", "67.458us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "26.105333ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "277.926250ms: exportMvg(): plot mapped to canvas\n", "279.960875ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "291.815208ms: exportMvg(): plot painted\n", "772.110208ms: exportMvg(): snapshot taken\n", "806.130750ms: exportMvg(): bitmap extracted\n", "817.168750ms: exportMvg(): MVG extracted, length=389161\n", "817.583458ms: exportMvg(): resources disposed\n", "\n", "3 of 10 (n=3000, solid=False, void=False, scale=2)\n", "42ns: exportMvg(): plotSpec parsed\n", "50.334us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "13.221334ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "217.000042ms: exportMvg(): plot mapped to canvas\n", "218.933167ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "236.411209ms: exportMvg(): plot painted\n", "849.730042ms: exportMvg(): snapshot taken\n", "864.533292ms: exportMvg(): bitmap extracted\n", "868.869834ms: exportMvg(): MVG extracted, length=576927\n", "869.196417ms: exportMvg(): resources disposed\n", "\n", "4 of 10 (n=4000, solid=False, void=False, scale=2)\n", "84ns: exportMvg(): plotSpec parsed\n", "46.834us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "17.854875ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "338.693084ms: exportMvg(): plot mapped to canvas\n", "341.081709ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "377.691959ms: exportMvg(): plot painted\n", "1.263547250s: exportMvg(): snapshot taken\n", "1.278656834s: exportMvg(): bitmap extracted\n", "1.284530250s: exportMvg(): MVG extracted, length=763796\n", "1.284984084s: exportMvg(): resources disposed\n", "\n", "5 of 10 (n=5000, solid=False, void=False, scale=2)\n", "83ns: exportMvg(): plotSpec parsed\n", "285.042us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "32.235708ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "360.525125ms: exportMvg(): plot mapped to canvas\n", "363.733042ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "393.532375ms: exportMvg(): plot painted\n", "1.544002750s: exportMvg(): snapshot taken\n", "1.559382792s: exportMvg(): bitmap extracted\n", "1.566904375s: exportMvg(): MVG extracted, length=951649\n", "1.567367167s: exportMvg(): resources disposed\n", "\n", "6 of 10 (n=6000, solid=False, void=False, scale=2)\n", "83ns: exportMvg(): plotSpec parsed\n", "65.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "35.748875ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "434.267833ms: exportMvg(): plot mapped to canvas\n", "436.398625ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "475.102375ms: exportMvg(): plot painted\n", "1.801664416s: exportMvg(): snapshot taken\n", "1.816822208s: exportMvg(): bitmap extracted\n", "1.827002333s: exportMvg(): MVG extracted, length=1139472\n", "1.827378291s: exportMvg(): resources disposed\n", "\n", "7 of 10 (n=7000, solid=False, void=False, scale=2)\n", "167ns: exportMvg(): plotSpec parsed\n", "85.667us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "35.387042ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "497.958625ms: exportMvg(): plot mapped to canvas\n", "499.813250ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "545.966792ms: exportMvg(): plot painted\n", "2.236404667s: exportMvg(): snapshot taken\n", "2.251214375s: exportMvg(): bitmap extracted\n", "2.261219083s: exportMvg(): MVG extracted, length=1326863\n", "2.261549542s: exportMvg(): resources disposed\n", "\n", "8 of 10 (n=8000, solid=False, void=False, scale=2)\n", "209ns: exportMvg(): plotSpec parsed\n", "56.584us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "36.382834ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "515.741625ms: exportMvg(): plot mapped to canvas\n", "518.565042ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "600.561834ms: exportMvg(): plot painted\n", "2.573277959s: exportMvg(): snapshot taken\n", "2.588211667s: exportMvg(): bitmap extracted\n", "2.599533667s: exportMvg(): MVG extracted, length=1514031\n", "2.600167625s: exportMvg(): resources disposed\n", "\n", "9 of 10 (n=9000, solid=False, void=False, scale=2)\n", "41ns: exportMvg(): plotSpec parsed\n", "64.291us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "42.644833ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "571.640083ms: exportMvg(): plot mapped to canvas\n", "573.803958ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "645.477291ms: exportMvg(): plot painted\n", "5.973600875s: exportMvg(): snapshot taken\n", "5.988748083s: exportMvg(): bitmap extracted\n", "6.001935875s: exportMvg(): MVG extracted, length=1701529\n", "6.002541916s: exportMvg(): resources disposed\n", "\n", "10 of 10 (n=10000, solid=False, void=False, scale=2)\n", "208ns: exportMvg(): plotSpec parsed\n", "84.542us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "75.169542ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "704.192500ms: exportMvg(): plot mapped to canvas\n", "706.234167ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "770.193542ms: exportMvg(): plot painted\n", "5.115618750s: exportMvg(): snapshot taken\n", "5.130567792s: exportMvg(): bitmap extracted\n", "5.164952458s: exportMvg(): MVG extracted, length=1889109\n", "5.166579375s: exportMvg(): resources disposed\n", "\n" ] } ], "source": [ "save_mvg([1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10_000], solid=False, scale=2)" ] }, { "cell_type": "markdown", "id": "ebb611fa-258e-464c-9e00-0f33b58b1799", "metadata": {}, "source": [ "# Summary" ] }, { "cell_type": "code", "execution_count": 6, "id": "7dbc1fc0-3e22-4178-8a25-6d4952c1305b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "--- Extracted Data ---\n", " file_name n solid scale void mapping_time \\\n", "0 solid_1000.mvg 1000 True 1 False 0.151705 \n", "1 solid_5000.mvg 5000 True 1 False 0.339750 \n", "2 solid_10000.mvg 10000 True 1 False 0.610094 \n", "3 solid_20000.mvg 20000 True 1 False 1.281384 \n", "4 solid_50000.mvg 50000 True 1 False 5.310952 \n", "5 solid_1000@2x.mvg 1000 True 2 False 0.204641 \n", "6 solid_5000@2x.mvg 5000 True 2 False 0.348808 \n", "7 solid_10000@2x.mvg 10000 True 2 False 0.692640 \n", "8 solid_20000@2x.mvg 20000 True 2 False 1.259610 \n", "9 solid_50000@2x.mvg 50000 True 2 False 3.235151 \n", "10 stroked_1000.mvg 1000 False 1 False 0.489950 \n", "11 stroked_5000.mvg 5000 False 1 False 0.401640 \n", "12 stroked_10000.mvg 10000 False 1 False 0.709911 \n", "13 stroked_20000.mvg 20000 False 1 False 1.334035 \n", "14 stroked_50000.mvg 50000 False 1 False 4.460475 \n", "15 stroked_1000@2x.mvg 1000 False 2 False 0.229399 \n", "16 stroked_2000@2x.mvg 2000 False 2 False 0.277926 \n", "17 stroked_3000@2x.mvg 3000 False 2 False 0.217000 \n", "18 stroked_4000@2x.mvg 4000 False 2 False 0.338693 \n", "19 stroked_5000@2x.mvg 5000 False 2 False 0.360525 \n", "20 stroked_6000@2x.mvg 6000 False 2 False 0.434268 \n", "21 stroked_7000@2x.mvg 7000 False 2 False 0.497959 \n", "22 stroked_8000@2x.mvg 8000 False 2 False 0.515742 \n", "23 stroked_9000@2x.mvg 9000 False 2 False 0.571640 \n", "24 stroked_10000@2x.mvg 10000 False 2 False 0.704192 \n", "\n", " paint_time snapshot_time total_time \n", "0 0.004776 0.134257 0.290738 \n", "1 0.020655 0.212712 0.573117 \n", "2 0.052712 0.321701 0.984507 \n", "3 0.079981 0.577084 1.938448 \n", "4 0.215714 1.520825 7.047491 \n", "5 0.006608 0.312825 0.524074 \n", "6 0.025058 0.497996 0.871862 \n", "7 0.067388 0.719264 1.479292 \n", "8 0.089701 1.250391 2.599703 \n", "9 0.208821 3.329655 6.773628 \n", "10 0.028254 0.139515 0.657718 \n", "11 0.034147 0.317262 0.753049 \n", "12 0.099125 0.626413 1.435448 \n", "13 0.164568 0.983032 2.481635 \n", "14 0.353866 2.385450 7.199791 \n", "15 0.011555 0.363832 0.604786 \n", "16 0.013889 0.480295 0.772110 \n", "17 0.019411 0.613319 0.849730 \n", "18 0.038999 0.885855 1.263547 \n", "19 0.033007 1.150470 1.544003 \n", "20 0.040835 1.326562 1.801664 \n", "21 0.048008 1.690438 2.236405 \n", "22 0.084820 1.972716 2.573278 \n", "23 0.073837 5.328124 5.973601 \n", "24 0.066001 4.345425 5.115619 \n" ] } ], "source": [ "# 3. Convert the global data list to a pandas DataFrame\n", "results_df = pd.DataFrame(MVG_EXPORT_DATA)\n", "\n", "# 4. Display the DataFrame\n", "print(\"\\n--- Extracted Data ---\")\n", "print(results_df)" ] }, { "cell_type": "code", "execution_count": 7, "id": "579ac7bd-cf35-4c83-8ba7-63a86540c635", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", " \n", "
\n", " \n", "
\n", "
\n", " \n", " \n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ggplot(results_df, aes(x='n', y='snapshot_time', color='solid')) + geom_line() + geom_point(tooltips='none') + facet_grid(x='scale')" ] }, { "cell_type": "code", "execution_count": 8, "id": "d37f24fa-18eb-4184-b03d-dc9617da6076", "metadata": {}, "outputs": [], "source": [ "results_df.to_csv(\"variant_release.csv\", index=False)" ] }, { "cell_type": "code", "execution_count": null, "id": "f671750f-794e-487a-89c7-6e92ae06e223", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 5 }
In [2]:
save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=True, scale=1)
1 of 5 (n=1000, solid=True, void=False, scale=1)
73ns: exportMvg(): plotSpec parsed
21.239us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
6.862766ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
80.095175ms: exportMvg(): plot mapped to canvas
81.084073ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0
92.989576ms: exportMvg(): plot painted
168.949128ms: exportMvg(): snapshot taken
173.132419ms: exportMvg(): bitmap extracted
175.868310ms: exportMvg(): MVG extracted, length=662048
176.369881ms: exportMvg(): resources disposed

2 of 5 (n=5000, solid=True, void=False, scale=1)
63ns: exportMvg(): plotSpec parsed
19.385us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
19.054648ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
259.552380ms: exportMvg(): plot mapped to canvas
260.016536ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0
320.938712ms: exportMvg(): plot painted
502.324973ms: exportMvg(): snapshot taken
506.902832ms: exportMvg(): bitmap extracted
526.692714ms: exportMvg(): MVG extracted, length=3257379
526.809149ms: exportMvg(): resources disposed

3 of 5 (n=10000, solid=True, void=False, scale=1)
389ns: exportMvg(): plotSpec parsed
19.658us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
39.325205ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
541.640615ms: exportMvg(): plot mapped to canvas
541.964244ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0
679.753415ms: exportMvg(): plot painted
1.213942511s: exportMvg(): snapshot taken
1.218014894s: exportMvg(): bitmap extracted
1.259075868s: exportMvg(): MVG extracted, length=6500086
1.259798855s: exportMvg(): resources disposed

4 of 5 (n=20000, solid=True, void=False, scale=1)
291ns: exportMvg(): plotSpec parsed
23.028us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
73.898468ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
1.062872158s: exportMvg(): plot mapped to canvas
1.063196545s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0
1.374829421s: exportMvg(): plot painted
2.720174764s: exportMvg(): snapshot taken
2.724226208s: exportMvg(): bitmap extracted
2.816952546s: exportMvg(): MVG extracted, length=12985678
2.817384432s: exportMvg(): resources disposed

5 of 5 (n=50000, solid=True, void=False, scale=1)
241ns: exportMvg(): plotSpec parsed
28.639us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
219.048703ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
8.916766121s: exportMvg(): plot mapped to canvas
8.917074449s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0
9.699510048s: exportMvg(): plot painted
13.058891597s: exportMvg(): snapshot taken
13.062931176s: exportMvg(): bitmap extracted
13.295812621s: exportMvg(): MVG extracted, length=32443781
13.296603668s: exportMvg(): resources disposed

Stroked

In [5]:
save_mvg([1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10_000], solid=False, scale=2)
1 of 10 (n=1000, solid=False, void=False, scale=2)
194ns: exportMvg(): plotSpec parsed
14.634us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
6.210414ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
67.310252ms: exportMvg(): plot mapped to canvas
68.336284ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
90.316609ms: exportMvg(): plot painted
442.749978ms: exportMvg(): snapshot taken
459.276959ms: exportMvg(): bitmap extracted
464.405157ms: exportMvg(): MVG extracted, length=1310745
464.444979ms: exportMvg(): resources disposed

2 of 10 (n=2000, solid=False, void=False, scale=2)
108ns: exportMvg(): plotSpec parsed
15.854us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
9.482904ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
106.369766ms: exportMvg(): plot mapped to canvas
107.407821ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
152.814636ms: exportMvg(): plot painted
957.207859ms: exportMvg(): snapshot taken
973.726977ms: exportMvg(): bitmap extracted
983.840417ms: exportMvg(): MVG extracted, length=2614695
983.877731ms: exportMvg(): resources disposed

3 of 10 (n=3000, solid=False, void=False, scale=2)
192ns: exportMvg(): plotSpec parsed
15.072us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
24.157867ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
150.886027ms: exportMvg(): plot mapped to canvas
151.925245ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
213.954819ms: exportMvg(): plot painted
1.697701785s: exportMvg(): snapshot taken
1.754966210s: exportMvg(): bitmap extracted
1.789974448s: exportMvg(): MVG extracted, length=3912842
1.790035907s: exportMvg(): resources disposed

4 of 10 (n=4000, solid=False, void=False, scale=2)
124ns: exportMvg(): plotSpec parsed
18.635us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
16.108253ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
218.260362ms: exportMvg(): plot mapped to canvas
219.337926ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
314.052500ms: exportMvg(): plot painted
2.677691143s: exportMvg(): snapshot taken
2.700956957s: exportMvg(): bitmap extracted
2.728764417s: exportMvg(): MVG extracted, length=5207884
2.728906601s: exportMvg(): resources disposed

5 of 10 (n=5000, solid=False, void=False, scale=2)
211ns: exportMvg(): plotSpec parsed
15.983us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
20.273595ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
272.550621ms: exportMvg(): plot mapped to canvas
273.598885ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
389.725839ms: exportMvg(): plot painted
4.053701643s: exportMvg(): snapshot taken
4.070123002s: exportMvg(): bitmap extracted
4.105260163s: exportMvg(): MVG extracted, length=6511739
4.105418615s: exportMvg(): resources disposed

6 of 10 (n=6000, solid=False, void=False, scale=2)
313ns: exportMvg(): plotSpec parsed
17.039us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
25.484068ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
354.816213ms: exportMvg(): plot mapped to canvas
355.856314ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
505.663752ms: exportMvg(): plot painted
5.467179161s: exportMvg(): snapshot taken
5.493962608s: exportMvg(): bitmap extracted
5.535160218s: exportMvg(): MVG extracted, length=7814799
5.535307658s: exportMvg(): resources disposed

7 of 10 (n=7000, solid=False, void=False, scale=2)
214ns: exportMvg(): plotSpec parsed
23.787us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
27.650867ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
522.230918ms: exportMvg(): plot mapped to canvas
523.447309ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
690.910498ms: exportMvg(): plot painted
7.169351006s: exportMvg(): snapshot taken
7.197563157s: exportMvg(): bitmap extracted
7.246912916s: exportMvg(): MVG extracted, length=9114077
7.247057534s: exportMvg(): resources disposed

8 of 10 (n=8000, solid=False, void=False, scale=2)
254ns: exportMvg(): plotSpec parsed
21.434us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
45.257493ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
489.388551ms: exportMvg(): plot mapped to canvas
490.425947ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
693.389293ms: exportMvg(): plot painted
9.002082470s: exportMvg(): snapshot taken
9.032648017s: exportMvg(): bitmap extracted
9.088822482s: exportMvg(): MVG extracted, length=10411057
9.088954790s: exportMvg(): resources disposed

9 of 10 (n=9000, solid=False, void=False, scale=2)
230ns: exportMvg(): plotSpec parsed
21.243us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
35.721247ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
639.130502ms: exportMvg(): plot mapped to canvas
640.172160ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
851.566793ms: exportMvg(): plot painted
11.280432485s: exportMvg(): snapshot taken
11.296134678s: exportMvg(): bitmap extracted
11.358833292s: exportMvg(): MVG extracted, length=11711189
11.358965264s: exportMvg(): resources disposed

10 of 10 (n=10000, solid=False, void=False, scale=2)
208ns: exportMvg(): plotSpec parsed
20.53us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))
38.092055ms: exportMvg(): plotCanvasFigure built, size=(600, 400)
629.640164ms: exportMvg(): plot mapped to canvas
630.668353ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0
866.815686ms: exportMvg(): plot painted
14.261661410s: exportMvg(): snapshot taken
14.277684011s: exportMvg(): bitmap extracted
14.375270953s: exportMvg(): MVG extracted, length=13012604
14.375331829s: exportMvg(): resources disposed

In [6]:
# 3. Convert the global data list to a pandas DataFrame
results_df = pd.DataFrame(MVG_EXPORT_DATA)

# 4. Display the DataFrame
print("\n--- Extracted Data ---")
print(results_df)
--- Extracted Data ---
               file_name      n  solid  scale   void  mapping_time  \
0         solid_1000.mvg   1000   True      1  False      0.080095   
1         solid_5000.mvg   5000   True      1  False      0.259552   
2        solid_10000.mvg  10000   True      1  False      0.541641   
3        solid_20000.mvg  20000   True      1  False      1.062872   
4        solid_50000.mvg  50000   True      1  False      8.916766   
5      solid_1000@2x.mvg   1000   True      2  False      0.067417   
6      solid_5000@2x.mvg   5000   True      2  False      0.224968   
7     solid_10000@2x.mvg  10000   True      2  False      0.490322   
8     solid_20000@2x.mvg  20000   True      2  False      1.047824   
9     solid_50000@2x.mvg  50000   True      2  False      2.675369   
10      stroked_1000.mvg   1000  False      1  False      0.068376   
11      stroked_5000.mvg   5000  False      1  False      0.231351   
12     stroked_10000.mvg  10000  False      1  False      0.698010   
13     stroked_20000.mvg  20000  False      1  False      1.082148   
14     stroked_50000.mvg  50000  False      1  False      3.184625   
15   stroked_1000@2x.mvg   1000  False      2  False      0.067310   
16   stroked_2000@2x.mvg   2000  False      2  False      0.106370   
17   stroked_3000@2x.mvg   3000  False      2  False      0.150886   
18   stroked_4000@2x.mvg   4000  False      2  False      0.218260   
19   stroked_5000@2x.mvg   5000  False      2  False      0.272551   
20   stroked_6000@2x.mvg   6000  False      2  False      0.354816   
21   stroked_7000@2x.mvg   7000  False      2  False      0.522231   
22   stroked_8000@2x.mvg   8000  False      2  False      0.489389   
23   stroked_9000@2x.mvg   9000  False      2  False      0.639131   
24  stroked_10000@2x.mvg  10000  False      2  False      0.629640   

    paint_time  snapshot_time  total_time  
0     0.012894       0.075960    0.168949  
1     0.061386       0.181386    0.502325  
2     0.138113       0.534189    1.213943  
3     0.311957       1.345345    2.720175  
4     0.782744       3.359382   13.058892  
5     0.013492       0.165382    0.246291  
6     0.101228       0.310327    0.636523  
7     0.140409       0.526663    1.157394  
8     0.313965       1.252981    2.614770  
9     0.788569       4.102992    7.566931  
10    0.022634       0.095980    0.186990  
11    0.148835       0.362527    0.742713  
12    0.237767       0.771037    1.706814  
13    0.509272       2.768427    4.359846  
14    1.188870       7.687922   12.061417  
15    0.023006       0.352433    0.442750  
16    0.046445       0.804393    0.957208  
17    0.063069       1.483747    1.697702  
18    0.095792       2.363639    2.677691  
19    0.117175       3.663976    4.053702  
20    0.150848       4.961515    5.467179  
21    0.168680       6.478441    7.169351  
22    0.204001       8.308693    9.002082  
23    0.212436      10.428866   11.280432  
24    0.237176      13.394846   14.261661  
In [8]:
results_df.to_csv("variant_release.csv", index=False)