<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to about performance</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/46f59508e5/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/46f59508e5/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/46f59508e5/</id><updated>2020-02-27T14:20:30.801000Z</updated><subtitle>Recent posts to about performance</subtitle><entry><title>about performance</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/46f59508e5/?limit=25#d827" rel="alternate"/><published>2020-02-27T14:20:30.801000Z</published><updated>2020-02-27T14:20:30.801000Z</updated><author><name>faili</name><uri>https://forge.codesys.com/u/faili/</uri></author><id>https://forge.codesys.com26ec5d0824724fed44fca916abaebae046a74943</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Andreaz &lt;/p&gt;
&lt;p&gt;do you mean it will be faster after inlining&lt;/p&gt;
&lt;p&gt;The test code is for a external library, so it is compiled by gnu of vxworks.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>about performance</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/46f59508e5/?limit=25#6e3a" rel="alternate"/><published>2020-02-27T14:20:29.465000Z</published><updated>2020-02-27T14:20:29.465000Z</updated><author><name>Andreaz</name><uri>https://forge.codesys.com/u/andreaz/</uri></author><id>https://forge.codesys.comd8eb96bb50896c70819056d3ecd9bdcffa73111d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Watch out for this code, a decent c compiler might inline that to the following, however the CodeSys compiler will not!&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;index &amp;lt; cycles;index++)&lt;/span&gt;
&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;After inlining&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;cycles&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>about performance</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/46f59508e5/?limit=25#234c" rel="alternate"/><published>2020-02-27T14:20:28.937000Z</published><updated>2020-02-27T14:20:28.937000Z</updated><author><name>faili</name><uri>https://forge.codesys.com/u/faili/</uri></author><id>https://forge.codesys.com11ac8b8dce00e20bb06362894462f63cd730a6f4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I did a test which show the performance of my cpu board by 1 million times multiplication.&lt;br/&gt;
First I did it directly in vxworks by c language. It spent 2500us on finishing the multiplication.&lt;br/&gt;
Then I make a external library by c language. It spent about 11666us on the test.&lt;br/&gt;
I don't know why the performance is so poor when I do it by codesys.&lt;br/&gt;
How can I improve the performance?&lt;/p&gt;
&lt;p&gt;the code just like below:&lt;/p&gt;
&lt;p&gt;void CDECL CDECL_EXT func1__main(func1_main_struct *p)&lt;br/&gt;
{&lt;br/&gt;
    UINT32 startTick, endTick, multipIntTick;&lt;br/&gt;
    INT32 index, cycles;&lt;br/&gt;
    INT32 i;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;cycles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt;pInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt;varIn&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;CAL_LogAdd&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;STD_LOGGER&lt;/span&gt;, &lt;span class="nv"&gt;COMPONENT_ID&lt;/span&gt;, &lt;span class="nv"&gt;LOG_INFO&lt;/span&gt;, &lt;span class="nv"&gt;ERR_OK&lt;/span&gt;, &lt;span class="mi"&gt;0&lt;/span&gt;, &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;---cycles=%d---&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, &lt;span class="nv"&gt;cycles&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;startTick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;sysTimeBaseLGet&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt;&lt;span class="c1"&gt;;         //get the ticks&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;index &amp;lt; cycles;index++)&lt;/span&gt;
    &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;endTick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;sysTimeBaseLGet&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt;&lt;span class="c1"&gt;;     &lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;endTick&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;startTick&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;multipIntTick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;endTick&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nv"&gt;xFFFFFFFF&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;startTick&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="c1"&gt;;    //get us&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt; 
    &lt;span class="nv"&gt;multipIntTick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;endTick&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;startTick&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;startTick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;sysTimeBaseLGet&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;CAL_LogAdd&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;STD_LOGGER&lt;/span&gt;, &lt;span class="nv"&gt;COMPONENT_ID&lt;/span&gt;, &lt;span class="nv"&gt;LOG_INFO&lt;/span&gt;, &lt;span class="nv"&gt;ERR_OK&lt;/span&gt;, &lt;span class="mi"&gt;0&lt;/span&gt;, &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;---Int=%d---&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, &lt;span class="nv"&gt;multipIntTick&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt;pInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt;varOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;multipIntTick&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;}&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>