-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbench_chart.html
More file actions
7 lines (7 loc) · 18 KB
/
Copy pathbench_chart.html
File metadata and controls
7 lines (7 loc) · 18 KB
1
2
3
4
5
6
7
<html>
<head><meta charset="utf-8" /></head>
<body>
<div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
<script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="4e1cb345-5762-4450-94c4-6a3ff817601f" class="plotly-graph-div" style="height:1100px; width:1200px;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("4e1cb345-5762-4450-94c4-6a3ff817601f")) { Plotly.newPlot( "4e1cb345-5762-4450-94c4-6a3ff817601f", [{"hovertemplate":"\u003cb\u003ePython — pure (math.erf)\u003c\u002fb\u003e\u003cbr\u003elanguage: Python\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#666666","dash":"dot","width":2},"marker":{"size":8},"mode":"lines+markers","name":"Python — pure (math.erf)","x":[10,100,1000,10000,100000,1000000],"y":[845.8038792014122,738.7506775557995,729.5829709619284,721.9791994430125,725.1233304850757,773.4176249941811],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003ePython — numpy\u002fscipy\u003c\u002fb\u003e\u003cbr\u003elanguage: Python\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#333333","dash":"dot","width":2},"marker":{"size":8},"mode":"lines+markers","name":"Python — numpy\u002fscipy","x":[10,100,1000,10000,100000,1000000],"y":[700.005330145359,97.90994226932526,40.082959458231926,55.812508799135685,62.98874970525504,66.45316700451076],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003ePython — py_vollib\u003c\u002fb\u003e\u003cbr\u003elanguage: Python\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#999999","dash":"dot","width":2},"marker":{"size":8},"mode":"lines+markers","name":"Python — py_vollib","x":[10,100,1000,10000,100000,1000000],"y":[2179.1085600852966,2158.3307534456253,2070.1659377664328,2086.845808662474,2048.0804098770022,2119.082749937661],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003ePython — ngv_opx (single)\u003c\u002fb\u003e\u003cbr\u003elanguage: Python\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#4a90e2","dash":"dot","width":2},"marker":{"size":8},"mode":"lines+markers","name":"Python — ngv_opx (single)","x":[10,100,1000,10000,100000,1000000],"y":[362.4940291047096,337.91991882026196,328.33300065249205,322.2874947823584,317.7437500562519,318.4363750042394],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003ePython — ngv_opx (vectorized)\u003c\u002fb\u003e\u003cbr\u003elanguage: Python\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#1f5fb5","dash":"dot","width":2},"marker":{"size":8},"mode":"lines+markers","name":"Python — ngv_opx (vectorized)","x":[10,100,1000,10000,100000,1000000],"y":[120.80417945981026,41.66970029473305,39.29203376173973,40.28750117868185,40.66542023792863,44.83366699423641],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003eJavaScript — @ngv\u002fopx (single)\u003c\u002fb\u003e\u003cbr\u003elanguage: JavaScript\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#3aa657","dash":"solid","width":2},"marker":{"size":8},"mode":"lines+markers","name":"JavaScript — @ngv\u002fopx (single)","x":[10,100,1000,10000,100000,1000000],"y":[245.90000000017656,165.42000000001167,216.8750000000017,70.03750000000011,65.83207999999999,65.15025000000001],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003eJavaScript — @ngv\u002fopx (vectorized)\u003c\u002fb\u003e\u003cbr\u003elanguage: JavaScript\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#1f7a3b","dash":"solid","width":2},"marker":{"size":8},"mode":"lines+markers","name":"JavaScript — @ngv\u002fopx (vectorized)","x":[10,100,1000,10000,100000,1000000],"y":[254.1000000000793,79.99999999999119,60.9579999999994,57.26249999999986,55.85583,56.51999999999998],"type":"scatter","xaxis":"x","yaxis":"y"},{"hovertemplate":"\u003cb\u003eRust — ngv_opx (vectorized)\u003c\u002fb\u003e\u003cbr\u003elanguage: Rust\u003cbr\u003eN=%{x:,}\u003cbr\u003e%{y:.1f} ns\u002foption\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#7b3fb5","dash":"solid","width":2},"marker":{"size":8},"mode":"lines+markers","name":"Rust — ngv_opx (vectorized)","x":[10,100,1000,10000,100000,1000000],"y":[29.1,29.16,31.542,36.5875,37.7517,38.2135],"type":"scatter","xaxis":"x","yaxis":"y"},{"cells":{"align":"right","fill":{"color":[["white","white","white","white","white","white"],["#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3"],["#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3"],["#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3","#f3f3f3"],["#d6e6fb","#d6e6fb","#d6e6fb","#d6e6fb","#d6e6fb","#d6e6fb"],["#d6e6fb","#d6e6fb","#d6e6fb","#d6e6fb","#d6e6fb","#d6e6fb"],["#d6f0dc","#d6f0dc","#d6f0dc","#d6f0dc","#d6f0dc","#d6f0dc"],["#d6f0dc","#d6f0dc","#d6f0dc","#d6f0dc","#d6f0dc","#d6f0dc"],["#e7d5f5","#e7d5f5","#e7d5f5","#e7d5f5","#e7d5f5","#e7d5f5"]]},"font":{"family":"monospace","size":14},"height":28,"values":[["10","100","1,000","10,000","100,000","1,000,000"],["845.8 ns","738.8 ns","729.6 ns","722.0 ns","725.1 ns","773.4 ns"],["700.0 ns","97.9 ns","40.1 ns","55.8 ns","63.0 ns","66.5 ns"],["2,179.1 ns","2,158.3 ns","2,070.2 ns","2,086.8 ns","2,048.1 ns","2,119.1 ns"],["362.5 ns","337.9 ns","328.3 ns","322.3 ns","317.7 ns","318.4 ns"],["120.8 ns","41.7 ns","39.3 ns","40.3 ns","40.7 ns","44.8 ns"],["245.9 ns","165.4 ns","216.9 ns","70.0 ns","65.8 ns","65.2 ns"],["254.1 ns","80.0 ns","61.0 ns","57.3 ns","55.9 ns","56.5 ns"],["29.1 ns","29.2 ns","31.5 ns","36.6 ns","37.8 ns","38.2 ns"]]},"columnwidth":[40,80,80,80,80,80,80,80,80],"header":{"align":"center","fill":{"color":["#ececec","#f3f3f3","#f3f3f3","#f3f3f3","#d6e6fb","#d6e6fb","#d6f0dc","#d6f0dc","#e7d5f5"]},"font":{"size":14},"height":96,"values":["\u003cb style='font-size:14px'\u003eN\u003c\u002fb\u003e\u003cbr\u003e\u003cspan style='font-size:11px;color:#888'\u003e(batch size)\u003c\u002fspan\u003e","\u003cspan style='background:#dcdcdc;color:#222222;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003ePYTHON\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#f3f3f3;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003emath.erf\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003esingle\u003c\u002fspan\u003e","\u003cspan style='background:#dcdcdc;color:#222222;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003ePYTHON\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#f3f3f3;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003enumpy\u002fscipy\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003evectorized\u003c\u002fspan\u003e","\u003cspan style='background:#dcdcdc;color:#222222;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003ePYTHON\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#f3f3f3;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003epy_vollib\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003esingle\u003c\u002fspan\u003e","\u003cspan style='background:#dcdcdc;color:#222222;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003ePYTHON\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#d6e6fb;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003engv_opx\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003esingle\u003c\u002fspan\u003e","\u003cspan style='background:#dcdcdc;color:#222222;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003ePYTHON\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#d6e6fb;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003engv_opx\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003evectorized\u003c\u002fspan\u003e","\u003cspan style='background:#c8e6cf;color:#1f7a3b;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003eJAVASCRIPT\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#d6f0dc;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003e@ngv\u002fopx\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003esingle\u003c\u002fspan\u003e","\u003cspan style='background:#c8e6cf;color:#1f7a3b;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003eJAVASCRIPT\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#d6f0dc;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003e@ngv\u002fopx\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003evectorized\u003c\u002fspan\u003e","\u003cspan style='background:#d8c4ea;color:#4a1f7a;font-size:11px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:1px;'\u003eRUST\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='background:#e7d5f5;display:inline-block;padding:1px 8px;border-radius:3px;'\u003e\u003cb style='font-size:14px'\u003engv_opx\u003c\u002fb\u003e\u003c\u002fspan\u003e\u003cbr\u003e\u003cspan style='font-size:12px;color:#555;font-style:italic'\u003evectorized\u003c\u002fspan\u003e"]},"type":"table","domain":{"x":[0.0,1.0],"y":[0.602,1.0]}}], {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"Batch size N"},"type":"log","showgrid":true},"yaxis":{"anchor":"x","domain":[0.0,0.597],"title":{"text":"ns per option"},"type":"log","showgrid":true},"annotations":[{"font":{"size":16},"showarrow":false,"text":"Log-log; lower is faster","x":0.5,"xanchor":"center","xref":"paper","y":0.597,"yanchor":"bottom","yref":"paper"}],"title":{"text":"Black-76 pricing throughput — Python 3.13.3\u003cbr\u003e\u003csub\u003e\u003cspan style='color:#555'\u003e● other Python libs\u003c\u002fspan\u003e · \u003cspan style='color:#1f5fb5'\u003e● Python ngv_opx\u003c\u002fspan\u003e · \u003cspan style='color:#1f7a3b'\u003e● JS @ngv\u002fopx (wasm)\u003c\u002fspan\u003e · \u003cspan style='color:#7b3fb5'\u003e● Rust ngv_opx (native)\u003c\u002fspan\u003e\u003c\u002fsub\u003e","x":0.5,"xanchor":"center"},"legend":{"orientation":"h","yanchor":"top","y":-0.12,"x":0.0},"margin":{"l":70,"r":30,"t":130,"b":80},"height":1100,"width":1200}, {"responsive": true} ) }; </script> </div>
</body>
</html>