Skip to content

Instantly share code, notes, and snippets.

@steveosoule
Last active February 22, 2023 17:01
Show Gist options
  • Save steveosoule/69c1aaac28fb3c49d794286a0ceb524c to your computer and use it in GitHub Desktop.
Save steveosoule/69c1aaac28fb3c49d794286a0ceb524c to your computer and use it in GitHub Desktop.
Miva - MVT Output Encoding Benchmark

Miva - MVT Output Encoding Benchmark

Outputting a complex string 100,000 times took roughly:

Encoding Duration (sec.)
mvt 0.15
mvte 0.28
mvta 0.40
mvtj 0.39
<mvt:comment>
Parameter Config
</mvt:comment>
<mvt:if expr="NOT(g.max GT 0 AND g.max LT 500000)">
<mvt:assign name="g.max" value="100000" />
</mvt:if>
<mvt:if expr="ISNULL g.test_string">
<mvt:capture variable="g.test_string">
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?'
</mvt:capture>
</mvt:if>
<mvt:if expr="ISNULL g.encoding">
<mvt:assign name="g.encoding" value="'mvt'" />
</mvt:if>
<mvt:if expr="ISNULL g.precision">
<mvt:assign name="g.precision" value="2" />
</mvt:if>
<mvt:comment>
Benchmark Loop
</mvt:comment>
<mvt:assign name="l.counter" value="0" />
<mvt:assign name="l.settings:benchmark:start" value="s.dyn_time_t $ '.' $ padl(s.dyn_tm_usec, 6, 0)" />
<mvt:capture variable="l.output">
<mvt:while expr="l.counter LT g.max">
<mvt:if expr="g.encoding EQ 'mvte'">
&mvte:global:test_string;
<mvt:elseif expr="g.encoding EQ 'mvt'">
&mvt:global:test_string;
<mvt:elseif expr="g.encoding EQ 'mvtj'">
&mvtj:global:test_string;
<mvt:elseif expr="g.encoding EQ 'mvta'">
&mvta:global:test_string;
</mvt:if>
<mvt:assign name="l.counter" value="l.counter + 1" />
</mvt:while>
</mvt:capture>
<mvt:assign name="l.settings:benchmark:current" value="s.dyn_time_t $ '.' $ padl(s.dyn_tm_usec, 6, 0)" />
<mvt:assign name="l.settings:benchmark:diff" value="l.settings:benchmark:current - l.settings:benchmark:start" />
<mvt:assign name="l.settings:benchmark:formatted_diff" value="rnd( l.settings:benchmark:diff, g.precision )" />
<mvt:comment>
Result Output
</mvt:comment>
<h2>Parameters</h2>
<form action="&mvte:urls:_self:auto_noparams;" method="get">
<p>
<label>
<b>Test String:</b> <small>(String to output at in loop with provided encoding)</small><br>
<textarea name="test_string">&mvte:global:test_string;</textarea>
</label>
</p>
<p>
<label>
<b>Encoding:</b> <small>(Which output encoding to use (ex mvt, mvte, mvta, mvtj)</small><br>
<mvt:comment> <input type="text" name="encoding" value="&mvte:global:encoding;"> </mvt:comment>
<button name="encoding" value="mvt">mvt</button>
<button name="encoding" value="mvte">mvte</button>
<button name="encoding" value="mvta">mvta</button>
<button name="encoding" value="mvtj">mvtj</button>
</label>
</p>
<p>
<label>
<b>Loop Count</b>: <small>(How many itterations in the output loop)</small><br>
<input type="number" min="1" max="500000" step="1" name="max" value="&mvte:global:max;">
</label>
</p>
<p>
<label>
<b>Duration Precision</b>: <small>(How many digits to round the output to)</small><br>
<input type="number" min="0" step="1" name="precision" value="&mvte:global:precision;">
</label>
</p>
<button>Submit</button>
</form>
<hr>
<h2>Results</h2>
<p>diff: &mvte:benchmark:formatted_diff;</p>
<hr>
<a href="&mvte:urls:_self:auto_noparams;">Reset to Default</a>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment