Skip to content

Commit b7f9f10

Browse files
Update gh-pages
Store path: /nix/store/5iam4yr3pdrksqc4qliz4i7v9mdrhqsl-website
1 parent f461ffb commit b7f9f10

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

comparison.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,11 @@ <h1 class="menu-title">UPLC Benchmark</h1>
174174
<div id="content" class="content">
175175
<main>
176176
<h1 id="comparison"><a class="header" href="#comparison">Comparison</a></h1>
177+
<p>While trying to implement all validators as closely to each other as possible there are some differences that impact measured script size and execution units.</p>
178+
<ul>
179+
<li>Plutarch while decoding Data-encoded types is checking for invariants such as hashes lengths, map key ordering etc. which leads to higher start up cost visible in NFT Marketplace validator.</li>
180+
<li>Opshin does expose option to compile without tracing so that is included in the final size. All implementations use traces in their source code but remaining allow to strip it with a compilation flag.</li>
181+
</ul>
177182
<h2 id="script-size-bytes"><a class="header" href="#script-size-bytes">Script size (bytes)</a></h2>
178183
<p>Script sizes are compared by compiling each script to CBOR and taking its binary size in bytes. Validators are compiled without traces if language supports it (Opshin does not) and are not passed through any external UPLC optimizer.</p>
179184
<p><img src="./script_size.png" alt="size plot" /></p>
@@ -187,6 +192,7 @@ <h2 id="script-size-bytes"><a class="header" href="#script-size-bytes">Script si
187192
</div>
188193
<p><a href="./script_size.csv">Raw script size data</a></p>
189194
<h2 id="execution-units"><a class="header" href="#execution-units">Execution Units</a></h2>
195+
<p>Execution units are abstract units of CEK machine. Despite being called CPU and Memory they <em>DO NOT</em> mean CPU cycles or allocated bytes, these are abstract, deterministic units of the virtual machine that executes UPLC.</p>
190196
<h3 id="lp-policy---mint-one"><a class="header" href="#lp-policy---mint-one">LP Policy - mint one</a></h3>
191197
<p><img src="./budget_lp_mint_one_nft.png" alt="execution_units plot" /></p>
192198
<!-- budget_lp_mint_one_nft.md -->

print.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ <h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h
186186
<li><a href="./static/constant-product-dex-spec.pdf">Constant Product DEX</a></li>
187187
</ul>
188188
<div style="break-before: page; page-break-before: always;"></div><h1 id="comparison"><a class="header" href="#comparison">Comparison</a></h1>
189+
<p>While trying to implement all validators as closely to each other as possible there are some differences that impact measured script size and execution units.</p>
190+
<ul>
191+
<li>Plutarch while decoding Data-encoded types is checking for invariants such as hashes lengths, map key ordering etc. which leads to higher start up cost visible in NFT Marketplace validator.</li>
192+
<li>Opshin does expose option to compile without tracing so that is included in the final size. All implementations use traces in their source code but remaining allow to strip it with a compilation flag.</li>
193+
</ul>
189194
<h2 id="script-size-bytes"><a class="header" href="#script-size-bytes">Script size (bytes)</a></h2>
190195
<p>Script sizes are compared by compiling each script to CBOR and taking its binary size in bytes. Validators are compiled without traces if language supports it (Opshin does not) and are not passed through any external UPLC optimizer.</p>
191196
<p><img src="./script_size.png" alt="size plot" /></p>
@@ -199,6 +204,7 @@ <h2 id="script-size-bytes"><a class="header" href="#script-size-bytes">Script si
199204
</div>
200205
<p><a href="./script_size.csv">Raw script size data</a></p>
201206
<h2 id="execution-units"><a class="header" href="#execution-units">Execution Units</a></h2>
207+
<p>Execution units are abstract units of CEK machine. Despite being called CPU and Memory they <em>DO NOT</em> mean CPU cycles or allocated bytes, these are abstract, deterministic units of the virtual machine that executes UPLC.</p>
202208
<h3 id="lp-policy---mint-one"><a class="header" href="#lp-policy---mint-one">LP Policy - mint one</a></h3>
203209
<p><img src="./budget_lp_mint_one_nft.png" alt="execution_units plot" /></p>
204210
<!-- budget_lp_mint_one_nft.md -->

searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

searchindex.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)