# Introduction

<p class="callout info">Last update : February 2023  
</p>

As many of you may already know, Udon can be pretty slow, but I was curious to know what really slows it down, so I made a world called "Udon Benchmark" to benchmark it, the world can be found here [https://vrchat.com/home/world/wrld\_174475ad-6f8e-444d-8b02-67cd13e13b74](https://vrchat.com/home/world/wrld_174475ad-6f8e-444d-8b02-67cd13e13b74)  
In that world I benchmarked :

- The execution time between C# and U#
- As many C# features I could possibly think off, for instance for-loops, function calls, recursive functions etc. and compare their execution times.

Each script got executed 50 times, and the results got averaged.

<p class="callout warning">All results I'll share are the results I got from my world, you'll probably get different results on your hardware.</p>

<p class="callout warning">Since VRChat keeps improving Udon, many results I'll share will probably be out of date in the future, and I cannot promise that I'll keep those values up-to-date.</p>

The values bellow shows a summary of all execution times, I'll explain each line in the next chapter, if you want you can paste those values into a .CSV file, or generate your own .CSV file in my "Udon Benchmark" world that features a CSV exporter.

- B1 : execution time of the Benchmark1 method
- B2 : execution time of the Benchmark2 method
- SD : Standard deviation, which shows the amount of variation or dispersion of a set of values [https://en.wikipedia.org/wiki/Standard\_deviation](https://en.wikipedia.org/wiki/Standard_deviation)

<table border="0" cellspacing="0" id="bkmrk-version-1.1---number"><colgroup width="367"></colgroup> <colgroup width="81"></colgroup> <colgroup width="85"></colgroup> <colgroup width="89"></colgroup> <colgroup width="131"></colgroup> <colgroup width="73"></colgroup> <colgroup width="85"></colgroup> <colgroup width="89"></colgroup> <colgroup span="2" width="131"></colgroup><tbody><tr><td align="left" height="17">Version 1.1 - Number o iterations : 50</td><td align="left">B1 (ms)</td><td align="left">B1 min (ms)</td><td align="left">B1 max (ms)</td><td align="left">B1 SD</td><td align="left">B2 (ms)</td><td align="left">B2 min (ms)</td><td align="left">B2 max (ms)</td><td align="left">B2 SD</td><td align="left">B1/B2</td></tr><tr><td align="left" height="17">C# vs U# (Part 1)</td><td align="left">684.576946</td><td align="left">661.567</td><td align="left">804.8891</td><td align="left">21.4634273630957</td><td align="left">  
</td><td align="left">  
</td><td align="left">  
</td><td align="left">  
</td><td align="left">  
</td></tr><tr><td align="left" height="17">C# vs U# (Part 2)</td><td align="left">972.71161</td><td align="left">928.6402</td><td align="left">1119.3484</td><td align="left">35.2456449139138</td><td align="left">  
</td><td align="left">  
</td><td align="left">  
</td><td align="left">  
</td><td align="left">  
</td></tr><tr><td align="left" height="17">For-loop overhead test</td><td align="left">79.903544</td><td align="left">76.9296</td><td align="left">94.951</td><td align="left">3.70946646218348</td><td align="left">35.388596</td><td align="left">33.3341</td><td align="left">53.8828</td><td align="left">3.81011410065158</td><td align="left">2.25788963201592</td></tr><tr><td align="left" height="17">Recursive vs iterative</td><td align="left">532.552632</td><td align="left">519.5953</td><td align="left">577.7497</td><td align="left">12.9280788058929</td><td align="left">79.859174</td><td align="left">77.0833</td><td align="left">93.3914</td><td align="left">3.69170508577324</td><td align="left">6.6686468858293</td></tr><tr><td align="left" height="17">Builtin functions vs calculating something manually (part 1)</td><td align="left">166.699154</td><td align="left">161.6328</td><td align="left">189.9542</td><td align="left">5.54937905157721</td><td align="left">92.678434</td><td align="left">88.3964</td><td align="left">125.4238</td><td align="left">6.55232813505581</td><td align="left">1.79868332691077</td></tr><tr><td align="left" height="17">Builtin functions vs calculating something manually (part 2)</td><td align="left">60.58319</td><td align="left">57.8675</td><td align="left">78.6651</td><td align="left">3.79625209517229</td><td align="left">63.034632</td><td align="left">60.8127</td><td align="left">76.2538</td><td align="left">2.8186812640978</td><td align="left">0.961109600830223</td></tr><tr><td align="left" height="17">Function overhead test</td><td align="left">57.03638</td><td align="left">54.4904</td><td align="left">65.0939</td><td align="left">2.92755877119487</td><td align="left">66.20722</td><td align="left">63.0205</td><td align="left">81.5224</td><td align="left">3.63724205056524</td><td align="left">0.861482780880997</td></tr><tr><td align="left" height="17">GetComponent&lt;&gt;()</td><td align="left">60.0576</td><td align="left">58.0447</td><td align="left">69.7074</td><td align="left">2.32634479559673</td><td align="left">111.367394</td><td align="left">106.5221</td><td align="left">122.6288</td><td align="left">3.81778258895972</td><td align="left">0.539274538470389</td></tr><tr><td align="left" height="17">Calling methods from a separate script</td><td align="left">236.120418</td><td align="left">228.2506</td><td align="left">261.7778</td><td align="left">7.89126462852919</td><td align="left">305.513994</td><td align="left">297.6651</td><td align="left">333.578</td><td align="left">7.45977174212214</td><td align="left">0.772862856161017</td></tr><tr><td align="left" height="17">Caching Networking.LocalPlayer</td><td align="left">15.097448</td><td align="left">14.5741</td><td align="left">18.5321</td><td align="left">0.783616316634614</td><td align="left">18.251728</td><td align="left">17.7745</td><td align="left">26.3932</td><td align="left">1.23896447132918</td><td align="left">0.827179103260798</td></tr><tr><td align="left" height="17">The "ref" keyword</td><td align="left">14.859624</td><td align="left">13.9105</td><td align="left">22.6906</td><td align="left">1.79010585715594</td><td align="left">14.171158</td><td align="left">13.4693</td><td align="left">18.1117</td><td align="left">1.23886350436035</td><td align="left">1.04858219772865</td></tr></tbody></table>