{ "cells": [ { "cell_type": "raw", "execution_count": 1, "id": "4730bc83-62e5-4223-bd19-ea615d6993b6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{\n", " \"cells\": [\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 1,\n", " \"id\": \"4730bc83-62e5-4223-bd19-ea615d6993b6\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"data\": {\n", " \"text/html\": [\n", " \"\\n\",\n", " \" \\n\",\n", " \" \\n\",\n", " \" \"\n", " ]\n", " },\n", " \"metadata\": {},\n", " \"output_type\": \"display_data\"\n", " }\n", " ],\n", " \"source\": [\n", " \"import contextlib\\n\",\n", " \"import ctypes\\n\",\n", " \"import io\\n\",\n", " \"import numpy as np\\n\",\n", " \"import os\\n\",\n", " \"import pandas as pd\\n\",\n", " \"import re\\n\",\n", " \"import sys\\n\",\n", " \"import tempfile\\n\",\n", " \"from IPython.display import Image\\n\",\n", " \"from lets_plot import *\\n\",\n", " \"\\n\",\n", " \"LetsPlot.setup_html()\\n\",\n", " \"\\n\",\n", " \"variant = \\\"release\\\"\\n\",\n", " \"\\n\",\n", " \"MVG_EXPORT_DATA = []\\n\",\n", " \"\\n\",\n", " \"\\n\",\n", " \"# best-effort: flush all C stdio buffers\\n\",\n", " \"try:\\n\",\n", " \" _libc = ctypes.CDLL(None)\\n\",\n", " \" _fflush_all = lambda: _libc.fflush(None)\\n\",\n", " \"except Exception:\\n\",\n", " \" _fflush_all = lambda: None\\n\",\n", " \"\\n\",\n", " \"\\n\",\n", " \"def capture_c_output(fn, *args, **kwargs) -> str:\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" Run fn(*args, **kwargs) and capture anything written to C stdout/stderr.\\n\",\n", " \" Returns a single string with stdout followed by stderr.\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" # Flush Python and C buffers before swapping FDs\\n\",\n", " \" sys.stdout.flush(); sys.stderr.flush(); _fflush_all()\\n\",\n", " \"\\n\",\n", " \" # Duplicate current stdout/stderr FDs\\n\",\n", " \" old_out_fd = os.dup(1)\\n\",\n", " \" old_err_fd = os.dup(2)\\n\",\n", " \"\\n\",\n", " \" with tempfile.TemporaryFile() as tmp_out, tempfile.TemporaryFile() as tmp_err:\\n\",\n", " \" try:\\n\",\n", " \" # Redirect FD 1 and 2 to our temp files\\n\",\n", " \" os.dup2(tmp_out.fileno(), 1)\\n\",\n", " \" os.dup2(tmp_err.fileno(), 2)\\n\",\n", " \"\\n\",\n", " \" # Run the function (which may call into C)\\n\",\n", " \" fn(*args, **kwargs)\\n\",\n", " \"\\n\",\n", " \" # Flush again before restoring\\n\",\n", " \" sys.stdout.flush(); sys.stderr.flush(); _fflush_all()\\n\",\n", " \" finally:\\n\",\n", " \" # Restore original FDs\\n\",\n", " \" os.dup2(old_out_fd, 1)\\n\",\n", " \" os.dup2(old_err_fd, 2)\\n\",\n", " \" os.close(old_out_fd)\\n\",\n", " \" os.close(old_err_fd)\\n\",\n", " \"\\n\",\n", " \" # Read captured data\\n\",\n", " \" tmp_out.seek(0); tmp_err.seek(0)\\n\",\n", " \" out = tmp_out.read().decode(\\\"utf-8\\\", errors=\\\"replace\\\")\\n\",\n", " \" err = tmp_err.read().decode(\\\"utf-8\\\", errors=\\\"replace\\\")\\n\",\n", " \"\\n\",\n", " \" return out + err\\n\",\n", " \" \\n\",\n", " \"\\n\",\n", " \"def _parse_and_store_output(output_text, file_name, n, solid, scale, void):\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" Helper function to parse output, including timestamps with minutes,\\n\",\n", " \" and append to the global data list.\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" \\n\",\n", " \" \\n\",\n", " \" def to_seconds(time_str):\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" Converts a complex time string (including minutes) into total seconds.\\n\",\n", " \" This version correctly prioritizes specific units like 'ms' over 'm'.\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" if not time_str:\\n\",\n", " \" return None\\n\",\n", " \" time_str = time_str.strip()\\n\",\n", " \" \\n\",\n", " \" # --- Check for the most specific units FIRST ---\\n\",\n", " \" if 'ms' in time_str:\\n\",\n", " \" return float(time_str.replace('ms', '').strip()) / 1000\\n\",\n", " \" if 'us' in time_str:\\n\",\n", " \" return float(time_str.replace('us', '').strip()) / 1_000_000\\n\",\n", " \" if 'ns' in time_str:\\n\",\n", " \" return float(time_str.replace('ns', '').strip()) / 1_000_000_000\\n\",\n", " \" \\n\",\n", " \" # --- Now, check for the composite minute/second format ---\\n\",\n", " \" if 'm' in time_str:\\n\",\n", " \" total_seconds = 0\\n\",\n", " \" parts = time_str.split('m')\\n\",\n", " \" minutes = float(parts[0].strip())\\n\",\n", " \" total_seconds += minutes * 60\\n\",\n", " \" \\n\",\n", " \" # If there's a seconds part after 'm', add it\\n\",\n", " \" if len(parts) > 1 and parts[1].strip():\\n\",\n", " \" seconds_str = parts[1].replace('s', '').strip()\\n\",\n", " \" if seconds_str:\\n\",\n", " \" total_seconds += float(seconds_str)\\n\",\n", " \" return total_seconds\\n\",\n", " \" \\n\",\n", " \" # --- Finally, check for standalone seconds ---\\n\",\n", " \" if 's' in time_str:\\n\",\n", " \" return float(time_str.replace('s', '').strip())\\n\",\n", " \" \\n\",\n", " \" # Fallback for unitless numbers (should not happen with this log format)\\n\",\n", " \" try:\\n\",\n", " \" return float(time_str)\\n\",\n", " \" except ValueError:\\n\",\n", " \" return None\\n\",\n", " \" \\n\",\n", " \" \\n\",\n", " \" if 'ms' in time_str: return float(time_str.replace('ms', '')) / 1000\\n\",\n", " \" if 'us' in time_str: return float(time_str.replace('us', '')) / 1_000_000\\n\",\n", " \" if 'ns' in time_str: return float(time_str.replace('ns', '')) / 1_000_000_000\\n\",\n", " \" if 's' in time_str: return float(time_str.replace('s', ''))\\n\",\n", " \" \\n\",\n", " \" try:\\n\",\n", " \" return float(time_str)\\n\",\n", " \" except ValueError:\\n\",\n", " \" return None\\n\",\n", " \"\\n\",\n", " \" \\n\",\n", " \" map_pattern = re.compile(r\\\"(.+?): exportMvg\\\\(\\\\)\\\\: plot mapped to canvas\\\")\\n\",\n", " \" paint_pattern = re.compile(r\\\"(.+?): exportMvg\\\\(\\\\)\\\\: plot painted\\\")\\n\",\n", " \" snapshot_pattern = re.compile(r\\\"(.+?): exportMvg\\\\(\\\\)\\\\: snapshot taken\\\")\\n\",\n", " \" \\n\",\n", " \" map_match = map_pattern.search(output_text)\\n\",\n", " \" paint_match = paint_pattern.search(output_text)\\n\",\n", " \" snapshot_match = snapshot_pattern.search(output_text)\\n\",\n", " \"\\n\",\n", " \" mapping_time = to_seconds(map_match.group(1) if map_match else None)\\n\",\n", " \" paint_time = to_seconds(paint_match.group(1) if paint_match else None)\\n\",\n", " \" snapshot_time = to_seconds(snapshot_match.group(1) if snapshot_match else None)\\n\",\n", " \" \\n\",\n", " \" MVG_EXPORT_DATA.append({\\n\",\n", " \" \\\"file_name\\\": file_name,\\n\",\n", " \" \\\"n\\\": n,\\n\",\n", " \" \\\"solid\\\": solid,\\n\",\n", " \" \\\"scale\\\": scale,\\n\",\n", " \" \\\"void\\\": void,\\n\",\n", " \" \\\"mapping_time\\\": mapping_time,\\n\",\n", " \" \\\"paint_time\\\": paint_time - mapping_time,\\n\",\n", " \" \\\"snapshot_time\\\": snapshot_time - paint_time,\\n\",\n", " \" \\\"total_time\\\": snapshot_time\\n\",\n", " \" })\\n\",\n", " \" \\n\",\n", " \"\\n\",\n", " \"def save_mvg(ns, solid, scale, void=False):\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \" Saves plots and automatically captures and parses the ggsave output\\n\",\n", " \" by capturing both stdout and stderr.\\n\",\n", " \" \\\"\\\"\\\"\\n\",\n", " \"\\n\",\n", " \" # show demo plot\\n\",\n", " \" p_n(100, solid, void).show()\\n\",\n", " \" \\n\",\n", " \" i = 1\\n\",\n", " \" \\n\",\n", " \" for n in ns:\\n\",\n", " \" if solid:\\n\",\n", " \" name = \\\"solid_\\\" + str(n)\\n\",\n", " \" else:\\n\",\n", " \" name = \\\"stroked_\\\" + str(n)\\n\",\n", " \"\\n\",\n", " \" p = p_n(n, solid, void)\\n\",\n", " \"\\n\",\n", " \" file_name = f\\\"{name}@{scale}x.mvg\\\" if scale != 1 else f\\\"{name}.mvg\\\"\\n\",\n", " \"\\n\",\n", " \" captured_output = capture_c_output(ggsave, p, file_name, scale=scale)\\n\",\n", " \" \\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", " \" \\n\",\n", " \" _parse_and_store_output(captured_output, file_name, n, solid, scale, void)\\n\",\n", " \" i = i + 1\\n\",\n", " \"\\n\",\n", " \"def p_n(n, solid, void):\\n\",\n", " \" np.random.seed(42)\\n\",\n", " \" \\n\",\n", " \" x = np.random.uniform(size=n)\\n\",\n", " \" y = np.random.uniform(size=n)\\n\",\n", " \" v = np.random.normal(size=n)\\n\",\n", " \" \\n\",\n", " \" p = ggplot({'x': x, 'y': y, 'v': v}, aes('x', 'y', fill='x'))\\n\",\n", " \" \\n\",\n", " \" if void:\\n\",\n", " \" theme = theme_void()\\n\",\n", " \" show_legend = False\\n\",\n", " \" else:\\n\",\n", " \" theme = geom_blank()\\n\",\n", " \" show_legend = True\\n\",\n", " \"\\n\",\n", " \" if solid:\\n\",\n", " \" l = geom_point(show_legend=show_legend)\\n\",\n", " \" else:\\n\",\n", " \" l = geom_point(shape=1, show_legend=show_legend)\\n\",\n", " \"\\n\",\n", " \" return p + l + theme\\n\",\n", " \"\\n\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"markdown\",\n", " \"id\": \"5ce5c772-ddb8-4011-9b2b-a9e887520d64\",\n", " \"metadata\": {},\n", " \"source\": [\n", " \"# Solid\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 2,\n", " \"id\": \"f3497a12-bb65-4b22-ad34-823369bd7636\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"data\": {\n", " \"text/html\": [\n", " \"
\\n\",\n", " \" \"\n", " ]\n", " },\n", " \"metadata\": {},\n", " \"output_type\": \"display_data\"\n", " },\n", " {\n", " \"name\": \"stdout\",\n", " \"output_type\": \"stream\",\n", " \"text\": [\n", " \"1 of 5 (n=1000, solid=True, void=False, scale=1)\\n\",\n", " \"0s: exportMvg(): plotSpec parsed\\n\",\n", " \"521.833us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"13.296250ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"151.704875ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"152.365042ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"156.480833ms: exportMvg(): plot painted\\n\",\n", " \"290.737542ms: exportMvg(): snapshot taken\\n\",\n", " \"294.542167ms: exportMvg(): bitmap extracted\\n\",\n", " \"295.902083ms: exportMvg(): MVG extracted, length=123494\\n\",\n", " \"296.227333ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"2 of 5 (n=5000, solid=True, void=False, scale=1)\\n\",\n", " \"208ns: exportMvg(): plotSpec parsed\\n\",\n", " \"60.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"22.710958ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"339.750458ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"340.359250ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"360.405291ms: exportMvg(): plot painted\\n\",\n", " \"573.116958ms: exportMvg(): snapshot taken\\n\",\n", " \"576.791666ms: exportMvg(): bitmap extracted\\n\",\n", " \"581.003041ms: exportMvg(): MVG extracted, length=562493\\n\",\n", " \"581.226500ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"3 of 5 (n=10000, solid=True, void=False, scale=1)\\n\",\n", " \"250ns: exportMvg(): plotSpec parsed\\n\",\n", " \"49.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"43.872875ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"610.093625ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"610.728333ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"662.805916ms: exportMvg(): plot painted\\n\",\n", " \"984.507125ms: exportMvg(): snapshot taken\\n\",\n", " \"988.148ms: exportMvg(): bitmap extracted\\n\",\n", " \"996.173541ms: exportMvg(): MVG extracted, length=1110822\\n\",\n", " \"996.544958ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"4 of 5 (n=20000, solid=True, void=False, scale=1)\\n\",\n", " \"41ns: exportMvg(): plotSpec parsed\\n\",\n", " \"77.625us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"93.194541ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"1.281383708s: exportMvg(): plot mapped to canvas\\n\",\n", " \"1.281957166s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"1.361364375s: exportMvg(): plot painted\\n\",\n", " \"1.938448250s: exportMvg(): snapshot taken\\n\",\n", " \"1.942208250s: exportMvg(): bitmap extracted\\n\",\n", " \"1.958994041s: exportMvg(): MVG extracted, length=2206404\\n\",\n", " \"1.961260458s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"5 of 5 (n=50000, solid=True, void=False, scale=1)\\n\",\n", " \"333ns: exportMvg(): plotSpec parsed\\n\",\n", " \"67.833us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"802.818083ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"5.310952208s: exportMvg(): plot mapped to canvas\\n\",\n", " \"5.313709625s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"5.526666250s: exportMvg(): plot painted\\n\",\n", " \"7.047491208s: exportMvg(): snapshot taken\\n\",\n", " \"7.051464s: exportMvg(): bitmap extracted\\n\",\n", " \"7.095691125s: exportMvg(): MVG extracted, length=5495800\\n\",\n", " \"7.097929250s: exportMvg(): resources disposed\\n\",\n", " \"\\n\"\n", " ]\n", " }\n", " ],\n", " \"source\": [\n", " \"save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=True, scale=1)\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 3,\n", " \"id\": \"dd9bf1af-0638-4048-b1fe-3a7776c720e4\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"data\": {\n", " \"text/html\": [\n", " \"
\\n\",\n", " \" \"\n", " ]\n", " },\n", " \"metadata\": {},\n", " \"output_type\": \"display_data\"\n", " },\n", " {\n", " \"name\": \"stdout\",\n", " \"output_type\": \"stream\",\n", " \"text\": [\n", " \"1 of 5 (n=1000, solid=True, void=False, scale=2)\\n\",\n", " \"125ns: exportMvg(): plotSpec parsed\\n\",\n", " \"53.458us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"13.230625ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"204.641167ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"206.909292ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"211.248667ms: exportMvg(): plot painted\\n\",\n", " \"524.073583ms: exportMvg(): snapshot taken\\n\",\n", " \"558.849333ms: exportMvg(): bitmap extracted\\n\",\n", " \"564.902333ms: exportMvg(): MVG extracted, length=123494\\n\",\n", " \"565.559333ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"2 of 5 (n=5000, solid=True, void=False, scale=2)\\n\",\n", " \"167ns: exportMvg(): plotSpec parsed\\n\",\n", " \"81.042us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"22.629ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"348.808417ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"350.838125ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"373.865959ms: exportMvg(): plot painted\\n\",\n", " \"871.862167ms: exportMvg(): snapshot taken\\n\",\n", " \"887.376500ms: exportMvg(): bitmap extracted\\n\",\n", " \"892.400750ms: exportMvg(): MVG extracted, length=562495\\n\",\n", " \"892.695334ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"3 of 5 (n=10000, solid=True, void=False, scale=2)\\n\",\n", " \"209ns: exportMvg(): plotSpec parsed\\n\",\n", " \"73.125us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"45.167334ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"692.640042ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"696.254459ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"760.028167ms: exportMvg(): plot painted\\n\",\n", " \"1.479292417s: exportMvg(): snapshot taken\\n\",\n", " \"1.495355459s: exportMvg(): bitmap extracted\\n\",\n", " \"1.503527792s: exportMvg(): MVG extracted, length=1110820\\n\",\n", " \"1.504090500s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"4 of 5 (n=20000, solid=True, void=False, scale=2)\\n\",\n", " \"41ns: exportMvg(): plotSpec parsed\\n\",\n", " \"67.541us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"93.382291ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"1.259610416s: exportMvg(): plot mapped to canvas\\n\",\n", " \"1.262181666s: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"1.349311500s: exportMvg(): plot painted\\n\",\n", " \"2.599702541s: exportMvg(): snapshot taken\\n\",\n", " \"2.614853500s: exportMvg(): bitmap extracted\\n\",\n", " \"2.631417458s: exportMvg(): MVG extracted, length=2206406\\n\",\n", " \"2.632439083s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"5 of 5 (n=50000, solid=True, void=False, scale=2)\\n\",\n", " \"250ns: exportMvg(): plotSpec parsed\\n\",\n", " \"111.292us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"230.238584ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"3.235150792s: exportMvg(): plot mapped to canvas\\n\",\n", " \"3.237281375s: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"3.443972167s: exportMvg(): plot painted\\n\",\n", " \"6.773627542s: exportMvg(): snapshot taken\\n\",\n", " \"6.790757709s: exportMvg(): bitmap extracted\\n\",\n", " \"6.840090834s: exportMvg(): MVG extracted, length=5495800\\n\",\n", " \"6.842326167s: exportMvg(): resources disposed\\n\",\n", " \"\\n\"\n", " ]\n", " }\n", " ],\n", " \"source\": [\n", " \"save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=True, scale=2)\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"markdown\",\n", " \"id\": \"ff0ffd6b-4f2b-4f87-bd43-1e914a5744aa\",\n", " \"metadata\": {},\n", " \"source\": [\n", " \"# Stroked\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 4,\n", " \"id\": \"50718e4c-5335-4c94-9008-ca7f10713065\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"data\": {\n", " \"text/html\": [\n", " \"
\\n\",\n", " \" \"\n", " ]\n", " },\n", " \"metadata\": {},\n", " \"output_type\": \"display_data\"\n", " },\n", " {\n", " \"name\": \"stdout\",\n", " \"output_type\": \"stream\",\n", " \"text\": [\n", " \"1 of 5 (n=1000, solid=False, void=False, scale=1)\\n\",\n", " \"250ns: exportMvg(): plotSpec parsed\\n\",\n", " \"89.083us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"30.318791ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"489.949750ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"490.565ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"518.203375ms: exportMvg(): plot painted\\n\",\n", " \"657.718416ms: exportMvg(): snapshot taken\\n\",\n", " \"666.083208ms: exportMvg(): bitmap extracted\\n\",\n", " \"672.138541ms: exportMvg(): MVG extracted, length=201285\\n\",\n", " \"672.435166ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"2 of 5 (n=5000, solid=False, void=False, scale=1)\\n\",\n", " \"83ns: exportMvg(): plotSpec parsed\\n\",\n", " \"74.5us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"33.366458ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"401.640208ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"402.380375ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"435.786833ms: exportMvg(): plot painted\\n\",\n", " \"753.048542ms: exportMvg(): snapshot taken\\n\",\n", " \"757.01ms: exportMvg(): bitmap extracted\\n\",\n", " \"764.667875ms: exportMvg(): MVG extracted, length=951649\\n\",\n", " \"765.469292ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"3 of 5 (n=10000, solid=False, void=False, scale=1)\\n\",\n", " \"250ns: exportMvg(): plotSpec parsed\\n\",\n", " \"87.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"44.163708ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"709.910583ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"710.514ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"809.035541ms: exportMvg(): plot painted\\n\",\n", " \"1.435448500s: exportMvg(): snapshot taken\\n\",\n", " \"1.439370375s: exportMvg(): bitmap extracted\\n\",\n", " \"1.454707416s: exportMvg(): MVG extracted, length=1889111\\n\",\n", " \"1.455353416s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"4 of 5 (n=20000, solid=False, void=False, scale=1)\\n\",\n", " \"84ns: exportMvg(): plotSpec parsed\\n\",\n", " \"73.417us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"110.986375ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"1.334035167s: exportMvg(): plot mapped to canvas\\n\",\n", " \"1.334754834s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"1.498602750s: exportMvg(): plot painted\\n\",\n", " \"2.481634584s: exportMvg(): snapshot taken\\n\",\n", " \"2.485502584s: exportMvg(): bitmap extracted\\n\",\n", " \"2.514975167s: exportMvg(): MVG extracted, length=3762798\\n\",\n", " \"2.516456459s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"5 of 5 (n=50000, solid=False, void=False, scale=1)\\n\",\n", " \"42ns: exportMvg(): plotSpec parsed\\n\",\n", " \"71.417us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"1.197814500s: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"4.460475084s: exportMvg(): plot mapped to canvas\\n\",\n", " \"4.461300s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\\n\",\n", " \"4.814341542s: exportMvg(): plot painted\\n\",\n", " \"7.199791250s: exportMvg(): snapshot taken\\n\",\n", " \"7.204037584s: exportMvg(): bitmap extracted\\n\",\n", " \"7.292499084s: exportMvg(): MVG extracted, length=9387029\\n\",\n", " \"7.293668209s: exportMvg(): resources disposed\\n\",\n", " \"\\n\"\n", " ]\n", " }\n", " ],\n", " \"source\": [\n", " \"save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=False, scale=1)\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 5,\n", " \"id\": \"a66a566c-5cee-4695-a34e-270c4317ec9e\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"data\": {\n", " \"text/html\": [\n", " \"
\\n\",\n", " \" \"\n", " ]\n", " },\n", " \"metadata\": {},\n", " \"output_type\": \"display_data\"\n", " },\n", " {\n", " \"name\": \"stdout\",\n", " \"output_type\": \"stream\",\n", " \"text\": [\n", " \"1 of 10 (n=1000, solid=False, void=False, scale=2)\\n\",\n", " \"334ns: exportMvg(): plotSpec parsed\\n\",\n", " \"204.459us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"31.818167ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"229.399167ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"232.651084ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"240.953834ms: exportMvg(): plot painted\\n\",\n", " \"604.786292ms: exportMvg(): snapshot taken\\n\",\n", " \"620.824542ms: exportMvg(): bitmap extracted\\n\",\n", " \"622.594542ms: exportMvg(): MVG extracted, length=201285\\n\",\n", " \"622.928625ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"2 of 10 (n=2000, solid=False, void=False, scale=2)\\n\",\n", " \"83ns: exportMvg(): plotSpec parsed\\n\",\n", " \"67.458us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"26.105333ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"277.926250ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"279.960875ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"291.815208ms: exportMvg(): plot painted\\n\",\n", " \"772.110208ms: exportMvg(): snapshot taken\\n\",\n", " \"806.130750ms: exportMvg(): bitmap extracted\\n\",\n", " \"817.168750ms: exportMvg(): MVG extracted, length=389161\\n\",\n", " \"817.583458ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"3 of 10 (n=3000, solid=False, void=False, scale=2)\\n\",\n", " \"42ns: exportMvg(): plotSpec parsed\\n\",\n", " \"50.334us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"13.221334ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"217.000042ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"218.933167ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"236.411209ms: exportMvg(): plot painted\\n\",\n", " \"849.730042ms: exportMvg(): snapshot taken\\n\",\n", " \"864.533292ms: exportMvg(): bitmap extracted\\n\",\n", " \"868.869834ms: exportMvg(): MVG extracted, length=576927\\n\",\n", " \"869.196417ms: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"4 of 10 (n=4000, solid=False, void=False, scale=2)\\n\",\n", " \"84ns: exportMvg(): plotSpec parsed\\n\",\n", " \"46.834us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"17.854875ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"338.693084ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"341.081709ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"377.691959ms: exportMvg(): plot painted\\n\",\n", " \"1.263547250s: exportMvg(): snapshot taken\\n\",\n", " \"1.278656834s: exportMvg(): bitmap extracted\\n\",\n", " \"1.284530250s: exportMvg(): MVG extracted, length=763796\\n\",\n", " \"1.284984084s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"5 of 10 (n=5000, solid=False, void=False, scale=2)\\n\",\n", " \"83ns: exportMvg(): plotSpec parsed\\n\",\n", " \"285.042us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"32.235708ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"360.525125ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"363.733042ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"393.532375ms: exportMvg(): plot painted\\n\",\n", " \"1.544002750s: exportMvg(): snapshot taken\\n\",\n", " \"1.559382792s: exportMvg(): bitmap extracted\\n\",\n", " \"1.566904375s: exportMvg(): MVG extracted, length=951649\\n\",\n", " \"1.567367167s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"6 of 10 (n=6000, solid=False, void=False, scale=2)\\n\",\n", " \"83ns: exportMvg(): plotSpec parsed\\n\",\n", " \"65.875us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"35.748875ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"434.267833ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"436.398625ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"475.102375ms: exportMvg(): plot painted\\n\",\n", " \"1.801664416s: exportMvg(): snapshot taken\\n\",\n", " \"1.816822208s: exportMvg(): bitmap extracted\\n\",\n", " \"1.827002333s: exportMvg(): MVG extracted, length=1139472\\n\",\n", " \"1.827378291s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"7 of 10 (n=7000, solid=False, void=False, scale=2)\\n\",\n", " \"167ns: exportMvg(): plotSpec parsed\\n\",\n", " \"85.667us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"35.387042ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"497.958625ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"499.813250ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"545.966792ms: exportMvg(): plot painted\\n\",\n", " \"2.236404667s: exportMvg(): snapshot taken\\n\",\n", " \"2.251214375s: exportMvg(): bitmap extracted\\n\",\n", " \"2.261219083s: exportMvg(): MVG extracted, length=1326863\\n\",\n", " \"2.261549542s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"8 of 10 (n=8000, solid=False, void=False, scale=2)\\n\",\n", " \"209ns: exportMvg(): plotSpec parsed\\n\",\n", " \"56.584us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"36.382834ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"515.741625ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"518.565042ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"600.561834ms: exportMvg(): plot painted\\n\",\n", " \"2.573277959s: exportMvg(): snapshot taken\\n\",\n", " \"2.588211667s: exportMvg(): bitmap extracted\\n\",\n", " \"2.599533667s: exportMvg(): MVG extracted, length=1514031\\n\",\n", " \"2.600167625s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"9 of 10 (n=9000, solid=False, void=False, scale=2)\\n\",\n", " \"41ns: exportMvg(): plotSpec parsed\\n\",\n", " \"64.291us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"42.644833ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"571.640083ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"573.803958ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"645.477291ms: exportMvg(): plot painted\\n\",\n", " \"5.973600875s: exportMvg(): snapshot taken\\n\",\n", " \"5.988748083s: exportMvg(): bitmap extracted\\n\",\n", " \"6.001935875s: exportMvg(): MVG extracted, length=1701529\\n\",\n", " \"6.002541916s: exportMvg(): resources disposed\\n\",\n", " \"\\n\",\n", " \"10 of 10 (n=10000, solid=False, void=False, scale=2)\\n\",\n", " \"208ns: exportMvg(): plotSpec parsed\\n\",\n", " \"84.542us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\\n\",\n", " \"75.169542ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\\n\",\n", " \"704.192500ms: exportMvg(): plot mapped to canvas\\n\",\n", " \"706.234167ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\\n\",\n", " \"770.193542ms: exportMvg(): plot painted\\n\",\n", " \"5.115618750s: exportMvg(): snapshot taken\\n\",\n", " \"5.130567792s: exportMvg(): bitmap extracted\\n\",\n", " \"5.164952458s: exportMvg(): MVG extracted, length=1889109\\n\",\n", " \"5.166579375s: exportMvg(): resources disposed\\n\",\n", " \"\\n\"\n", " ]\n", " }\n", " ],\n", " \"source\": [\n", " \"save_mvg([1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10_000], solid=False, scale=2)\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"markdown\",\n", " \"id\": \"ebb611fa-258e-464c-9e00-0f33b58b1799\",\n", " \"metadata\": {},\n", " \"source\": [\n", " \"# Summary\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 6,\n", " \"id\": \"7dbc1fc0-3e22-4178-8a25-6d4952c1305b\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"name\": \"stdout\",\n", " \"output_type\": \"stream\",\n", " \"text\": [\n", " \"\\n\",\n", " \"--- Extracted Data ---\\n\",\n", " \" file_name n solid scale void mapping_time \\\\\\n\",\n", " \"0 solid_1000.mvg 1000 True 1 False 0.151705 \\n\",\n", " \"1 solid_5000.mvg 5000 True 1 False 0.339750 \\n\",\n", " \"2 solid_10000.mvg 10000 True 1 False 0.610094 \\n\",\n", " \"3 solid_20000.mvg 20000 True 1 False 1.281384 \\n\",\n", " \"4 solid_50000.mvg 50000 True 1 False 5.310952 \\n\",\n", " \"5 solid_1000@2x.mvg 1000 True 2 False 0.204641 \\n\",\n", " \"6 solid_5000@2x.mvg 5000 True 2 False 0.348808 \\n\",\n", " \"7 solid_10000@2x.mvg 10000 True 2 False 0.692640 \\n\",\n", " \"8 solid_20000@2x.mvg 20000 True 2 False 1.259610 \\n\",\n", " \"9 solid_50000@2x.mvg 50000 True 2 False 3.235151 \\n\",\n", " \"10 stroked_1000.mvg 1000 False 1 False 0.489950 \\n\",\n", " \"11 stroked_5000.mvg 5000 False 1 False 0.401640 \\n\",\n", " \"12 stroked_10000.mvg 10000 False 1 False 0.709911 \\n\",\n", " \"13 stroked_20000.mvg 20000 False 1 False 1.334035 \\n\",\n", " \"14 stroked_50000.mvg 50000 False 1 False 4.460475 \\n\",\n", " \"15 stroked_1000@2x.mvg 1000 False 2 False 0.229399 \\n\",\n", " \"16 stroked_2000@2x.mvg 2000 False 2 False 0.277926 \\n\",\n", " \"17 stroked_3000@2x.mvg 3000 False 2 False 0.217000 \\n\",\n", " \"18 stroked_4000@2x.mvg 4000 False 2 False 0.338693 \\n\",\n", " \"19 stroked_5000@2x.mvg 5000 False 2 False 0.360525 \\n\",\n", " \"20 stroked_6000@2x.mvg 6000 False 2 False 0.434268 \\n\",\n", " \"21 stroked_7000@2x.mvg 7000 False 2 False 0.497959 \\n\",\n", " \"22 stroked_8000@2x.mvg 8000 False 2 False 0.515742 \\n\",\n", " \"23 stroked_9000@2x.mvg 9000 False 2 False 0.571640 \\n\",\n", " \"24 stroked_10000@2x.mvg 10000 False 2 False 0.704192 \\n\",\n", " \"\\n\",\n", " \" paint_time snapshot_time total_time \\n\",\n", " \"0 0.004776 0.134257 0.290738 \\n\",\n", " \"1 0.020655 0.212712 0.573117 \\n\",\n", " \"2 0.052712 0.321701 0.984507 \\n\",\n", " \"3 0.079981 0.577084 1.938448 \\n\",\n", " \"4 0.215714 1.520825 7.047491 \\n\",\n", " \"5 0.006608 0.312825 0.524074 \\n\",\n", " \"6 0.025058 0.497996 0.871862 \\n\",\n", " \"7 0.067388 0.719264 1.479292 \\n\",\n", " \"8 0.089701 1.250391 2.599703 \\n\",\n", " \"9 0.208821 3.329655 6.773628 \\n\",\n", " \"10 0.028254 0.139515 0.657718 \\n\",\n", " \"11 0.034147 0.317262 0.753049 \\n\",\n", " \"12 0.099125 0.626413 1.435448 \\n\",\n", " \"13 0.164568 0.983032 2.481635 \\n\",\n", " \"14 0.353866 2.385450 7.199791 \\n\",\n", " \"15 0.011555 0.363832 0.604786 \\n\",\n", " \"16 0.013889 0.480295 0.772110 \\n\",\n", " \"17 0.019411 0.613319 0.849730 \\n\",\n", " \"18 0.038999 0.885855 1.263547 \\n\",\n", " \"19 0.033007 1.150470 1.544003 \\n\",\n", " \"20 0.040835 1.326562 1.801664 \\n\",\n", " \"21 0.048008 1.690438 2.236405 \\n\",\n", " \"22 0.084820 1.972716 2.573278 \\n\",\n", " \"23 0.073837 5.328124 5.973601 \\n\",\n", " \"24 0.066001 4.345425 5.115619 \\n\"\n", " ]\n", " }\n", " ],\n", " \"source\": [\n", " \"# 3. Convert the global data list to a pandas DataFrame\\n\",\n", " \"results_df = pd.DataFrame(MVG_EXPORT_DATA)\\n\",\n", " \"\\n\",\n", " \"# 4. Display the DataFrame\\n\",\n", " \"print(\\\"\\\\n--- Extracted Data ---\\\")\\n\",\n", " \"print(results_df)\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 7,\n", " \"id\": \"579ac7bd-cf35-4c83-8ba7-63a86540c635\",\n", " \"metadata\": {},\n", " \"outputs\": [\n", " {\n", " \"data\": {\n", " \"text/html\": [\n", " \"\\n\",\n", " \"
\\n\",\n", " \"
\\n\",\n", " \"
\\n\",\n", " \" \\n\",\n", " \"
\\n\",\n", " \" \\n\",\n", " \"
\\n\",\n", " \"
\\n\",\n", " \" \\n\",\n", " \" \\n\",\n", " \" \\n\",\n", " \" \"\n", " ],\n", " \"text/plain\": [\n", " \"\"\n", " ]\n", " },\n", " \"execution_count\": 7,\n", " \"metadata\": {},\n", " \"output_type\": \"execute_result\"\n", " }\n", " ],\n", " \"source\": [\n", " \"ggplot(results_df, aes(x='n', y='snapshot_time', color='solid')) + geom_line() + geom_point(tooltips='none') + facet_grid(x='scale')\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": 8,\n", " \"id\": \"d37f24fa-18eb-4184-b03d-dc9617da6076\",\n", " \"metadata\": {},\n", " \"outputs\": [],\n", " \"source\": [\n", " \"results_df.to_csv(\\\"variant_release.csv\\\", index=False)\"\n", " ]\n", " },\n", " {\n", " \"cell_type\": \"code\",\n", " \"execution_count\": null,\n", " \"id\": \"f671750f-794e-487a-89c7-6e92ae06e223\",\n", " \"metadata\": {},\n", " \"outputs\": [],\n", " \"source\": []\n", " }\n", " ],\n", " \"metadata\": {\n", " \"kernelspec\": {\n", " \"display_name\": \"Python 3 (ipykernel)\",\n", " \"language\": \"python\",\n", " \"name\": \"python3\"\n", " },\n", " \"language_info\": {\n", " \"codemirror_mode\": {\n", " \"name\": \"ipython\",\n", " \"version\": 3\n", " },\n", " \"file_extension\": \".py\",\n", " \"mimetype\": \"text/x-python\",\n", " \"name\": \"python\",\n", " \"nbconvert_exporter\": \"python\",\n", " \"pygments_lexer\": \"ipython3\",\n", " \"version\": \"3.12.2\"\n", " }\n", " },\n", " \"nbformat\": 4,\n", " \"nbformat_minor\": 5\n", "}\n" ] }, { "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", "73ns: exportMvg(): plotSpec parsed\n", "21.239us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "6.862766ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "80.095175ms: exportMvg(): plot mapped to canvas\n", "81.084073ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "92.989576ms: exportMvg(): plot painted\n", "168.949128ms: exportMvg(): snapshot taken\n", "173.132419ms: exportMvg(): bitmap extracted\n", "175.868310ms: exportMvg(): MVG extracted, length=662048\n", "176.369881ms: exportMvg(): resources disposed\n", "\n", "2 of 5 (n=5000, solid=True, void=False, scale=1)\n", "63ns: exportMvg(): plotSpec parsed\n", "19.385us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "19.054648ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "259.552380ms: exportMvg(): plot mapped to canvas\n", "260.016536ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "320.938712ms: exportMvg(): plot painted\n", "502.324973ms: exportMvg(): snapshot taken\n", "506.902832ms: exportMvg(): bitmap extracted\n", "526.692714ms: exportMvg(): MVG extracted, length=3257379\n", "526.809149ms: exportMvg(): resources disposed\n", "\n", "3 of 5 (n=10000, solid=True, void=False, scale=1)\n", "389ns: exportMvg(): plotSpec parsed\n", "19.658us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "39.325205ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "541.640615ms: exportMvg(): plot mapped to canvas\n", "541.964244ms: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "679.753415ms: exportMvg(): plot painted\n", "1.213942511s: exportMvg(): snapshot taken\n", "1.218014894s: exportMvg(): bitmap extracted\n", "1.259075868s: exportMvg(): MVG extracted, length=6500086\n", "1.259798855s: exportMvg(): resources disposed\n", "\n", "4 of 5 (n=20000, solid=True, void=False, scale=1)\n", "291ns: exportMvg(): plotSpec parsed\n", "23.028us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "73.898468ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "1.062872158s: exportMvg(): plot mapped to canvas\n", "1.063196545s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "1.374829421s: exportMvg(): plot painted\n", "2.720174764s: exportMvg(): snapshot taken\n", "2.724226208s: exportMvg(): bitmap extracted\n", "2.816952546s: exportMvg(): MVG extracted, length=12985678\n", "2.817384432s: exportMvg(): resources disposed\n", "\n", "5 of 5 (n=50000, solid=True, void=False, scale=1)\n", "241ns: exportMvg(): plotSpec parsed\n", "28.639us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=1.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "219.048703ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "8.916766121s: exportMvg(): plot mapped to canvas\n", "8.917074449s: exportMvg(): canvas size: (600, 400), pixelDensity=1.0\n", "9.699510048s: exportMvg(): plot painted\n", "13.058891597s: exportMvg(): snapshot taken\n", "13.062931176s: exportMvg(): bitmap extracted\n", "13.295812621s: exportMvg(): MVG extracted, length=32443781\n", "13.296603668s: exportMvg(): resources disposed\n", "\n" ] } ], "source": [ "save_mvg([1000, 5000, 10_000, 20_000, 50_000], solid=True, scale=1)" ] }, { "cell_type": "markdown", "id": "ff0ffd6b-4f2b-4f87-bd43-1e914a5744aa", "metadata": {}, "source": [ "# Stroked" ] }, { "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", "194ns: exportMvg(): plotSpec parsed\n", "14.634us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "6.210414ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "67.310252ms: exportMvg(): plot mapped to canvas\n", "68.336284ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "90.316609ms: exportMvg(): plot painted\n", "442.749978ms: exportMvg(): snapshot taken\n", "459.276959ms: exportMvg(): bitmap extracted\n", "464.405157ms: exportMvg(): MVG extracted, length=1310745\n", "464.444979ms: exportMvg(): resources disposed\n", "\n", "2 of 10 (n=2000, solid=False, void=False, scale=2)\n", "108ns: exportMvg(): plotSpec parsed\n", "15.854us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "9.482904ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "106.369766ms: exportMvg(): plot mapped to canvas\n", "107.407821ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "152.814636ms: exportMvg(): plot painted\n", "957.207859ms: exportMvg(): snapshot taken\n", "973.726977ms: exportMvg(): bitmap extracted\n", "983.840417ms: exportMvg(): MVG extracted, length=2614695\n", "983.877731ms: exportMvg(): resources disposed\n", "\n", "3 of 10 (n=3000, solid=False, void=False, scale=2)\n", "192ns: exportMvg(): plotSpec parsed\n", "15.072us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "24.157867ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "150.886027ms: exportMvg(): plot mapped to canvas\n", "151.925245ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "213.954819ms: exportMvg(): plot painted\n", "1.697701785s: exportMvg(): snapshot taken\n", "1.754966210s: exportMvg(): bitmap extracted\n", "1.789974448s: exportMvg(): MVG extracted, length=3912842\n", "1.790035907s: exportMvg(): resources disposed\n", "\n", "4 of 10 (n=4000, solid=False, void=False, scale=2)\n", "124ns: exportMvg(): plotSpec parsed\n", "18.635us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "16.108253ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "218.260362ms: exportMvg(): plot mapped to canvas\n", "219.337926ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "314.052500ms: exportMvg(): plot painted\n", "2.677691143s: exportMvg(): snapshot taken\n", "2.700956957s: exportMvg(): bitmap extracted\n", "2.728764417s: exportMvg(): MVG extracted, length=5207884\n", "2.728906601s: exportMvg(): resources disposed\n", "\n", "5 of 10 (n=5000, solid=False, void=False, scale=2)\n", "211ns: exportMvg(): plotSpec parsed\n", "15.983us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "20.273595ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "272.550621ms: exportMvg(): plot mapped to canvas\n", "273.598885ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "389.725839ms: exportMvg(): plot painted\n", "4.053701643s: exportMvg(): snapshot taken\n", "4.070123002s: exportMvg(): bitmap extracted\n", "4.105260163s: exportMvg(): MVG extracted, length=6511739\n", "4.105418615s: exportMvg(): resources disposed\n", "\n", "6 of 10 (n=6000, solid=False, void=False, scale=2)\n", "313ns: exportMvg(): plotSpec parsed\n", "17.039us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "25.484068ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "354.816213ms: exportMvg(): plot mapped to canvas\n", "355.856314ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "505.663752ms: exportMvg(): plot painted\n", "5.467179161s: exportMvg(): snapshot taken\n", "5.493962608s: exportMvg(): bitmap extracted\n", "5.535160218s: exportMvg(): MVG extracted, length=7814799\n", "5.535307658s: exportMvg(): resources disposed\n", "\n", "7 of 10 (n=7000, solid=False, void=False, scale=2)\n", "214ns: exportMvg(): plotSpec parsed\n", "23.787us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "27.650867ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "522.230918ms: exportMvg(): plot mapped to canvas\n", "523.447309ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "690.910498ms: exportMvg(): plot painted\n", "7.169351006s: exportMvg(): snapshot taken\n", "7.197563157s: exportMvg(): bitmap extracted\n", "7.246912916s: exportMvg(): MVG extracted, length=9114077\n", "7.247057534s: exportMvg(): resources disposed\n", "\n", "8 of 10 (n=8000, solid=False, void=False, scale=2)\n", "254ns: exportMvg(): plotSpec parsed\n", "21.434us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "45.257493ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "489.388551ms: exportMvg(): plot mapped to canvas\n", "490.425947ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "693.389293ms: exportMvg(): plot painted\n", "9.002082470s: exportMvg(): snapshot taken\n", "9.032648017s: exportMvg(): bitmap extracted\n", "9.088822482s: exportMvg(): MVG extracted, length=10411057\n", "9.088954790s: exportMvg(): resources disposed\n", "\n", "9 of 10 (n=9000, solid=False, void=False, scale=2)\n", "230ns: exportMvg(): plotSpec parsed\n", "21.243us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "35.721247ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "639.130502ms: exportMvg(): plot mapped to canvas\n", "640.172160ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "851.566793ms: exportMvg(): plot painted\n", "11.280432485s: exportMvg(): snapshot taken\n", "11.296134678s: exportMvg(): bitmap extracted\n", "11.358833292s: exportMvg(): MVG extracted, length=11711189\n", "11.358965264s: exportMvg(): resources disposed\n", "\n", "10 of 10 (n=10000, solid=False, void=False, scale=2)\n", "208ns: exportMvg(): plotSpec parsed\n", "20.53us: exportMvg(): exportParameters(dpi=96.0, scaleFactor=2.0, sizingPolicy=SizingPolicy(widthMode=FIXED, heightMode=FIXED, width=null, height=null))\n", "38.092055ms: exportMvg(): plotCanvasFigure built, size=(600, 400)\n", "629.640164ms: exportMvg(): plot mapped to canvas\n", "630.668353ms: exportMvg(): canvas size: (600, 400), pixelDensity=2.0\n", "866.815686ms: exportMvg(): plot painted\n", "14.261661410s: exportMvg(): snapshot taken\n", "14.277684011s: exportMvg(): bitmap extracted\n", "14.375270953s: exportMvg(): MVG extracted, length=13012604\n", "14.375331829s: 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": "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.080095 \n", "1 solid_5000.mvg 5000 True 1 False 0.259552 \n", "2 solid_10000.mvg 10000 True 1 False 0.541641 \n", "3 solid_20000.mvg 20000 True 1 False 1.062872 \n", "4 solid_50000.mvg 50000 True 1 False 8.916766 \n", "5 solid_1000@2x.mvg 1000 True 2 False 0.067417 \n", "6 solid_5000@2x.mvg 5000 True 2 False 0.224968 \n", "7 solid_10000@2x.mvg 10000 True 2 False 0.490322 \n", "8 solid_20000@2x.mvg 20000 True 2 False 1.047824 \n", "9 solid_50000@2x.mvg 50000 True 2 False 2.675369 \n", "10 stroked_1000.mvg 1000 False 1 False 0.068376 \n", "11 stroked_5000.mvg 5000 False 1 False 0.231351 \n", "12 stroked_10000.mvg 10000 False 1 False 0.698010 \n", "13 stroked_20000.mvg 20000 False 1 False 1.082148 \n", "14 stroked_50000.mvg 50000 False 1 False 3.184625 \n", "15 stroked_1000@2x.mvg 1000 False 2 False 0.067310 \n", "16 stroked_2000@2x.mvg 2000 False 2 False 0.106370 \n", "17 stroked_3000@2x.mvg 3000 False 2 False 0.150886 \n", "18 stroked_4000@2x.mvg 4000 False 2 False 0.218260 \n", "19 stroked_5000@2x.mvg 5000 False 2 False 0.272551 \n", "20 stroked_6000@2x.mvg 6000 False 2 False 0.354816 \n", "21 stroked_7000@2x.mvg 7000 False 2 False 0.522231 \n", "22 stroked_8000@2x.mvg 8000 False 2 False 0.489389 \n", "23 stroked_9000@2x.mvg 9000 False 2 False 0.639131 \n", "24 stroked_10000@2x.mvg 10000 False 2 False 0.629640 \n", "\n", " paint_time snapshot_time total_time \n", "0 0.012894 0.075960 0.168949 \n", "1 0.061386 0.181386 0.502325 \n", "2 0.138113 0.534189 1.213943 \n", "3 0.311957 1.345345 2.720175 \n", "4 0.782744 3.359382 13.058892 \n", "5 0.013492 0.165382 0.246291 \n", "6 0.101228 0.310327 0.636523 \n", "7 0.140409 0.526663 1.157394 \n", "8 0.313965 1.252981 2.614770 \n", "9 0.788569 4.102992 7.566931 \n", "10 0.022634 0.095980 0.186990 \n", "11 0.148835 0.362527 0.742713 \n", "12 0.237767 0.771037 1.706814 \n", "13 0.509272 2.768427 4.359846 \n", "14 1.188870 7.687922 12.061417 \n", "15 0.023006 0.352433 0.442750 \n", "16 0.046445 0.804393 0.957208 \n", "17 0.063069 1.483747 1.697702 \n", "18 0.095792 2.363639 2.677691 \n", "19 0.117175 3.663976 4.053702 \n", "20 0.150848 4.961515 5.467179 \n", "21 0.168680 6.478441 7.169351 \n", "22 0.204001 8.308693 9.002082 \n", "23 0.212436 10.428866 11.280432 \n", "24 0.237176 13.394846 14.261661 \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": 8, "id": "d37f24fa-18eb-4184-b03d-dc9617da6076", "metadata": {}, "outputs": [], "source": [ "results_df.to_csv(\"variant_release.csv\", index=False)" ] } ], "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.11" } }, "nbformat": 4, "nbformat_minor": 5 }