<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://community.bistudio.com/wiki?action=history&amp;feed=atom&amp;title=Arma_Reforger%3AScripting_Performance</id>
	<title>Arma Reforger:Scripting Performance - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://community.bistudio.com/wiki?action=history&amp;feed=atom&amp;title=Arma_Reforger%3AScripting_Performance"/>
	<link rel="alternate" type="text/html" href="https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;action=history"/>
	<updated>2026-04-19T00:23:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=322322&amp;oldid=prev</id>
		<title>Lou Montana: Add redirection</title>
		<link rel="alternate" type="text/html" href="https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=322322&amp;oldid=prev"/>
		<updated>2022-05-30T14:22:56Z</updated>

		<summary type="html">&lt;p&gt;Add redirection&lt;/p&gt;
&lt;a href=&quot;https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;amp;diff=322322&amp;amp;oldid=321693&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Lou Montana</name></author>
	</entry>
	<entry>
		<id>https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=321693&amp;oldid=prev</id>
		<title>Lou Montana: Text replacement - &quot;lang=&quot;cpp&quot;&gt;&quot; to &quot;lang=&quot;C#&quot;&gt;&quot;</title>
		<link rel="alternate" type="text/html" href="https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=321693&amp;oldid=prev"/>
		<updated>2022-05-19T09:17:20Z</updated>

		<summary type="html">&lt;p&gt;Text replacement - &amp;quot;lang=&amp;quot;cpp&amp;quot;&amp;gt;&amp;quot; to &amp;quot;lang=&amp;quot;C#&amp;quot;&amp;gt;&amp;quot;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:17, 19 May 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;Line 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// soon™&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// soon™&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// soon™&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// soon™&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot;&gt;Line 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l83&quot;&gt;Line 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class EnemyManager&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class EnemyManager&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l146&quot;&gt;Line 146:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 146:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l175&quot;&gt;Line 175:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 175:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l250&quot;&gt;Line 250:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 250:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l278&quot;&gt;Line 278:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 278:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l335&quot;&gt;Line 335:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 335:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Optimised&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- style=&amp;quot;vertical-align: top&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l364&quot;&gt;Line 364:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 364:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cpp&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C#&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class PerformanceExample : IEntity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lou Montana</name></author>
	</entry>
	<entry>
		<id>https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=321574&amp;oldid=prev</id>
		<title>Lou Montana: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=321574&amp;oldid=prev"/>
		<updated>2022-05-18T09:03:53Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:03, 18 May 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Lou Montana</name></author>
	</entry>
	<entry>
		<id>https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=321573&amp;oldid=prev</id>
		<title>biki&gt;Lou Montana: Some wiki formatting</title>
		<link rel="alternate" type="text/html" href="https://community.bistudio.com/wiki?title=Arma_Reforger:Scripting_Performance&amp;diff=321573&amp;oldid=prev"/>
		<updated>2022-05-09T16:34:52Z</updated>

		<summary type="html">&lt;p&gt;Some wiki formatting&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{TOC|side||3}}&lt;br /&gt;
Performance is an important aspect of scripting, as poor performance can tank the whole gaming experience, if not the game itself.&lt;br /&gt;
&lt;br /&gt;
* what is tanking perfs&lt;br /&gt;
** crazy requests&lt;br /&gt;
** RAM saturation&lt;br /&gt;
** redundant code operations&lt;br /&gt;
* how to benchmark/identify what slows down things&lt;br /&gt;
** what is acceptable?&lt;br /&gt;
** what is not?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Performance Enemies ==&lt;br /&gt;
&lt;br /&gt;
Many if not all of the usual performance issues can see some of these questions asked:&lt;br /&gt;
&lt;br /&gt;
* is it needed?&lt;br /&gt;
* is it needed ''there?''&lt;br /&gt;
* is it needed ''that much?''&lt;br /&gt;
* is it needed ''immediately?''&lt;br /&gt;
* is it needed ''that frequently?''&lt;br /&gt;
&lt;br /&gt;
and the respective solutions to positive replies to these questions would be:&lt;br /&gt;
&lt;br /&gt;
* don't do it: quite straightforward, can mean to remove the code or to replace it with a simpler code&lt;br /&gt;
* don't do it ''there'': the concerned class might be dealing with responsibilities that are out of its scope&lt;br /&gt;
* don't do it ''that much'': the structure can be rethought in order to have fewer operations to be executed&lt;br /&gt;
* don't do it ''in one frame'': the calculation can be spread over multiple frames and result delayed and cached&lt;br /&gt;
* don't do it ''that frequently'': the code can be set to run every X seconds, result being delayed and cached until the next iteration&lt;br /&gt;
&lt;br /&gt;
=== Not Needed ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
Partially unneeded calculation is done.&lt;br /&gt;
&lt;br /&gt;
==== Solution ====&lt;br /&gt;
* Remove the unneeded code&lt;br /&gt;
* split the code to only do needed processing in each case&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! Original&lt;br /&gt;
! Optimised&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// soon™&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// soon™&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Misplaced ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
A calculation/storage is done on every instance whereas calculation could be centralised.&lt;br /&gt;
&lt;br /&gt;
==== Solution ====&lt;br /&gt;
Move the responsibility and the data to a dedicated class ('''S''' from SOLID, '''S'''ingle '''R'''esponsibility '''P'''rinciple).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 50%&amp;quot; | Original&lt;br /&gt;
! Optimised&lt;br /&gt;
|- style=&amp;quot;vertical-align: top&amp;quot;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref PotentialTarget&amp;gt; m_aObjects = { /* ... */ }; // big list of objects&lt;br /&gt;
&lt;br /&gt;
	protected array&amp;lt;ref PotentialTarget&amp;gt; GetTargets()&lt;br /&gt;
	{&lt;br /&gt;
		array &amp;lt;ref PotentialTarget&amp;gt; result = {};&lt;br /&gt;
		foreach (PotentialTarget object : m_aObjects)&lt;br /&gt;
		{&lt;br /&gt;
			if (object.IsEnemyTo(this.GetFaction()))&lt;br /&gt;
			{&lt;br /&gt;
				result.Insert(object);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class EnemyManager&lt;br /&gt;
{&lt;br /&gt;
	protected ref map&amp;lt;Faction, ref array&amp;lt;ref PotentialTarget&amp;gt;&amp;gt; m_mTargetMap;&lt;br /&gt;
&lt;br /&gt;
	void EnemyManager(array&amp;lt;ref PotentialTarget&amp;gt; potentialTargets)&lt;br /&gt;
	{&lt;br /&gt;
		m_mTargetMap = new map&amp;lt;Faction, ref array&amp;lt;ref PotentialTarget&amp;gt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
		array&amp;lt;ref PotentialTarget&amp;gt; factionTargets;&lt;br /&gt;
		foreach (Faction faction : Faction.GetAllFactions())&lt;br /&gt;
		{&lt;br /&gt;
			factionTargets = {};&lt;br /&gt;
			foreach (PotentialTarget potentialTarget : potentialTargets)&lt;br /&gt;
			{&lt;br /&gt;
				if (potentialTarget.IsEnemyTo(faction))&lt;br /&gt;
				{&lt;br /&gt;
					factionTargets.Insert(potentialTarget);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			m_mTargetMap.Set(faction, factionTargets);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	array&amp;lt;ref PotentialTarget&amp;gt; GetTargets(Faction faction)&lt;br /&gt;
	{&lt;br /&gt;
		return m_mTargetMap.Get(faction);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref m_EnemyManager;&lt;br /&gt;
&lt;br /&gt;
	void PerformanceExample(notnull EnemyManager enemyManager)&lt;br /&gt;
	{&lt;br /&gt;
		m_EnemyManager = enemyManager;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	protected array&amp;lt;ref PotentialTarget&amp;gt; GetTargets()&lt;br /&gt;
	{&lt;br /&gt;
		return m_EnemyManager.GetTargets(this.GetFaction());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Not Spread ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
A big array of data is processed at once. The calculation itself is not the issue, the amount of items is.&amp;lt;br&amp;gt;&lt;br /&gt;
'''or'''&amp;lt;br&amp;gt;&lt;br /&gt;
A heavy calculation is done, and only one such operation should happen per frame.&lt;br /&gt;
&lt;br /&gt;
==== Solution ====&lt;br /&gt;
Spread the calculation over multiple frames.&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
Array size issue&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 50%&amp;quot; | Original&lt;br /&gt;
! Optimised&lt;br /&gt;
|- style=&amp;quot;vertical-align: top&amp;quot;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref AliveOrNotObject&amp;gt; m_aObjects = { /* ... */ }; // big list of objects&lt;br /&gt;
&lt;br /&gt;
	void EOnInit(IEntity owner)&lt;br /&gt;
	{&lt;br /&gt;
		GetGame().GetCallqueue().CallLater(PrintResult, 250, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	int GetNumberOfAliveObjects()&lt;br /&gt;
	{&lt;br /&gt;
		int result = 0;&lt;br /&gt;
		foreach (AliveOrNotObject object : m_aObjects)&lt;br /&gt;
		{&lt;br /&gt;
			if (object.IsAlive())&lt;br /&gt;
			{&lt;br /&gt;
				result++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void PrintResult()&lt;br /&gt;
	{&lt;br /&gt;
		Print(&amp;quot;Alive objects = &amp;quot; + GetNumberOfAliveObjects());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref AliveOrNotObject&amp;gt; m_aObjects = { /* ... */ }; // big list of objects&lt;br /&gt;
	protected ref array&amp;lt;ref AliveOrNotObject&amp;gt; m_aObjectsToBeProcessed = {};&lt;br /&gt;
	protected bool m_bIsCalculating;&lt;br /&gt;
	protected int m_iTempResult;&lt;br /&gt;
	protected int m_iAliveCountBuffer;&lt;br /&gt;
&lt;br /&gt;
	void EOnInit(IEntity owner)&lt;br /&gt;
	{&lt;br /&gt;
		Calculate();&lt;br /&gt;
		GetGame().GetCallqueue().CallLater(PrintResult, 250, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void EOnFrame(IEntity owner, float timeSlice)&lt;br /&gt;
	{&lt;br /&gt;
		if (m_bIsCalculating)&lt;br /&gt;
		{&lt;br /&gt;
			Calculate();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// other frame things&lt;br /&gt;
		// ...&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void Calculate()&lt;br /&gt;
	{&lt;br /&gt;
		if (m_aObjectsToBeProcessed.Count() &amp;lt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			m_bIsCalculating = true;&lt;br /&gt;
			m_iTempResult = 0;&lt;br /&gt;
			m_aObjectsToBeProcessed.Copy(m_aObjects);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// max 10k items slice&lt;br /&gt;
		for (int i = 0, int maxCount = Math.Min(m_aObjectsToBeProcessed.Count(), 10000); i &amp;lt; maxCount; i++)&lt;br /&gt;
		{&lt;br /&gt;
			AliveOrNotObject object = m_aObjectsToBeProcessed[0];	// always @ index 0&lt;br /&gt;
																	// for we remove the first item later&lt;br /&gt;
			if (object.IsAlive())&lt;br /&gt;
			{&lt;br /&gt;
				m_iTempResult++;&lt;br /&gt;
			}&lt;br /&gt;
			m_aObjectsToBeProcessed.Remove(0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (m_aObjectsToBeProcessed.Count() &amp;lt; 1)&lt;br /&gt;
		{&lt;br /&gt;
			m_iAliveCountBuffer = m_iTempResult;&lt;br /&gt;
			GetGame().GetCallqueue().CallLater(Calculate, 1000); // restart calculation in 1 second&lt;br /&gt;
			m_bIsCalculating = false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	int GetNumberOfAliveObjects()&lt;br /&gt;
	{&lt;br /&gt;
		return m_iAliveCountBuffer;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void PrintResult()&lt;br /&gt;
	{&lt;br /&gt;
		Print(&amp;quot;Alive objects = &amp;quot; + GetNumberOfAliveObjects());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
Heavy calculation issue&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 50%&amp;quot; | Original&lt;br /&gt;
! Optimised&lt;br /&gt;
|- style=&amp;quot;vertical-align: top&amp;quot;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref Player&amp;gt; m_aPlayers = { /* ... */ };&lt;br /&gt;
	protected ref map&amp;lt;ref Player, bool&amp;gt; m_mCastResult;&lt;br /&gt;
	protected BaseWorld world;&lt;br /&gt;
&lt;br /&gt;
	void PerformanceExample()&lt;br /&gt;
	{&lt;br /&gt;
		m_mCastResult = new map&amp;lt;ref Player, bool&amp;gt;();&lt;br /&gt;
		world = GetGame().GetWorld();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void CheckLineOfSight()&lt;br /&gt;
	{&lt;br /&gt;
		float result;&lt;br /&gt;
		TraceParam traceParam;&lt;br /&gt;
		foreach (Player player : m_aPlayers)&lt;br /&gt;
		{&lt;br /&gt;
			traceParam = new TraceParam();&lt;br /&gt;
			traceParam.Start = this.Position();&lt;br /&gt;
			traceParam.End = player.Position();&lt;br /&gt;
			result = world.TraceMove(traceParam, null); // a Trace is a very expensive method&lt;br /&gt;
			m_mCastResult.Set(player, result == 1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref Player&amp;gt; m_aPlayers = { /* ... */ };&lt;br /&gt;
	protected ref map&amp;lt;ref Player, bool&amp;gt; m_mCastResult;&lt;br /&gt;
	protected BaseWorld world;&lt;br /&gt;
	protected int m_iIndex = -1;&lt;br /&gt;
	protected bool m_bIsCalculating;&lt;br /&gt;
&lt;br /&gt;
	void PerformanceExample()&lt;br /&gt;
	{&lt;br /&gt;
		m_mCastResult = new map&amp;lt;ref Player, bool&amp;gt;();&lt;br /&gt;
		world = GetGame().GetWorld();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void EOnFrame(IEntity owner, float timeSlice)&lt;br /&gt;
	{&lt;br /&gt;
		if (m_bIsCalculating)&lt;br /&gt;
		{&lt;br /&gt;
			CheckLineOfSight();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void CheckLineOfSight()&lt;br /&gt;
	{&lt;br /&gt;
		m_iIndex++;&lt;br /&gt;
		m_bIsCalculating = m_iIndex &amp;lt; m_aPlayers.Count();&lt;br /&gt;
		if (!m_bIsCalculating)&lt;br /&gt;
		{&lt;br /&gt;
			m_iIndex = -1;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		Player player = m_aPlayers[m_iIndex];&lt;br /&gt;
		TraceParam traceParam = new TraceParam();&lt;br /&gt;
		traceParam.Start = this.Position();&lt;br /&gt;
		traceParam.End = player.Position();&lt;br /&gt;
		float result = world.TraceMove(traceParam, null); // one Trace per frame&lt;br /&gt;
		m_mCastResult.Set(player, result == 1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Not Delayed ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
A heavy operation is done frequently.&lt;br /&gt;
&lt;br /&gt;
==== Solution ====&lt;br /&gt;
Do the heavy operation once, store its result in a member variable and accessible through a getter.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 50%&amp;quot; | Original&lt;br /&gt;
! Optimised&lt;br /&gt;
|- style=&amp;quot;vertical-align: top&amp;quot;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref AliveOrNotObject&amp;gt; m_aObjects = { /* ... */ }; // big list of objects&lt;br /&gt;
&lt;br /&gt;
	void EOnInit(IEntity owner)&lt;br /&gt;
	{&lt;br /&gt;
		GetGame().GetCallqueue().CallLater(PrintResult, 250, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	int GetNumberOfAliveObjects()&lt;br /&gt;
	{&lt;br /&gt;
		int result = 0;&lt;br /&gt;
		foreach (AliveOrNotObject object : m_aObjects)&lt;br /&gt;
		{&lt;br /&gt;
			if (object.IsAlive())&lt;br /&gt;
			{&lt;br /&gt;
				result++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void PrintResult()&lt;br /&gt;
	{&lt;br /&gt;
		Print(&amp;quot;Alive objects = &amp;quot; + GetNumberOfAliveObjects());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class PerformanceExample : IEntity&lt;br /&gt;
{&lt;br /&gt;
	protected ref array&amp;lt;ref AliveOrNotObject&amp;gt; m_aObjects = { /* ... */ }; // big list of objects&lt;br /&gt;
	protected int m_iAliveCountBuffer;&lt;br /&gt;
&lt;br /&gt;
	void EOnInit(IEntity owner)&lt;br /&gt;
	{&lt;br /&gt;
		GetGame().GetCallqueue().CallLater(Calculate, 1000, true);	// calculate only every second&lt;br /&gt;
		GetGame().GetCallqueue().CallLater(PrintResult, 250, true);	// displays result every 1/4 second&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void Calculate()&lt;br /&gt;
	{&lt;br /&gt;
		int result = 0;&lt;br /&gt;
		foreach (AliveOrNotObject object : m_aObjects)&lt;br /&gt;
		{&lt;br /&gt;
			if (object.IsAlive())&lt;br /&gt;
			{&lt;br /&gt;
				result++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		m_iAliveCountBuffer = result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	int GetNumberOfAliveObjects()&lt;br /&gt;
	{&lt;br /&gt;
		return m_iAliveCountBuffer;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void PrintResult()&lt;br /&gt;
	{&lt;br /&gt;
		Print(&amp;quot;Alive objects = &amp;quot; + GetNumberOfAliveObjects());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Big Foreach ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
Going through one big list of items in one operation.&lt;br /&gt;
&lt;br /&gt;
==== Specific Solution ====&lt;br /&gt;
&lt;br /&gt;
* use a smaller list by being more precise&lt;br /&gt;
* {{hl|continue}} out of the scope if the item is not viable for the operation&lt;br /&gt;
&lt;br /&gt;
=== High-Frequency Scripts ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
OnEachFrame thingies - is it needed?&lt;br /&gt;
&lt;br /&gt;
==== Specific Solution ====&lt;br /&gt;
&lt;br /&gt;
* less resource-hungry calls&lt;br /&gt;
* buffering/caching&lt;br /&gt;
&lt;br /&gt;
=== High-Performance Request ===&lt;br /&gt;
&lt;br /&gt;
==== Problem ====&lt;br /&gt;
Is a 10km raycast really needed?&lt;br /&gt;
&lt;br /&gt;
==== Specific Solution ====&lt;br /&gt;
&lt;br /&gt;
* reconsider the need&lt;br /&gt;
* find a smarter solution&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Benchmark ==&lt;br /&gt;
&lt;br /&gt;
=== Valid Concerns ===&lt;br /&gt;
&lt;br /&gt;
* non time-critical operations that are made in the same frame&lt;br /&gt;
* high RAM usage&lt;br /&gt;
&lt;br /&gt;
=== No Concerns ===&lt;br /&gt;
&lt;br /&gt;
* Normal operations that are required and that one cannot do without (yes, check if the player is alive before performing action, otherwise the feature breaks)&lt;br /&gt;
* one-time required big operation (spawning a base = data loading, no can do anything about it)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GameCategory|armaR|Modding|Tutorials|Scripting}}&lt;/div&gt;</summary>
		<author><name>biki&gt;Lou Montana</name></author>
	</entry>
</feed>