{"id":2676,"date":"2019-03-25T17:40:42","date_gmt":"2019-03-25T20:40:42","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/performance-tips-for-e3\/"},"modified":"2021-04-13T10:42:25","modified_gmt":"2021-04-13T13:42:25","slug":"performance-tips-for-e3","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/","title":{"rendered":"Performance tips for E3."},"content":{"rendered":"<p>Slow applications? Screens taking too long to open? Animations hanging? In this article, we will share some tips with you for better development that will help you avoid this kind of performance issues in your E3 applications.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\"><span style=\"font-style: italic\">WhileRunning <\/span>Events<\/span><\/p>\n<p>Avoid using cyclical scripts. Sometimes, these kind of scripts are used in order to perform a certain type of animation on screen, or to get the current value of a given property or equation. Instead of creating a cyclical event to perform these functions (which can make the application underperform), most of the times you can simply use links, which will play these exact same roles without damaging the system. This happens because links are only checked when the source&#8217;s value (or property) changes.<\/p>\n<p>In case you cannot use links to implement the intended result, it is advisable to create a user-generated event that will only be executed when one of these conditions is met.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Accessing Server objects via Viewer <\/span><\/p>\n<p>Every time the value of a Server&#8217;s tag or property is asked via scripts in the Viewer with <span style=\"font-style: italic\">Application.GetObject<\/span> method, communication with the Server is established. Therefore, the more often this method is used, the more the Viewer will communicate with the Server, which leads to worse performance. However, there are some ways you can reduce the frequency of <span style=\"font-style: italic\">Application.GetObjects<\/span> in your application. For example:<\/p>\n<ul>\n<li>Replace script equations with links whenever possible<\/li>\n<li>Use Viewer tags (demo, internal, chrono, timer) instead of Server tags<\/li>\n<li>Create properties in the XControls to access properties from XObjects<\/li>\n<\/ul>\n<p>Another suggestion to optimize this access to data is to use <span style=\"font-style: italic\">Set <\/span>command to create a reference to the object, and then copy the property&#8217;s value to an internal variable of the script. See the examples below:<\/p>\n<p>How not to do it:<\/p>\n<p><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 If Application.GetObject(&#8220;Data.InternalTag1&#8221;).Value <= 10 then<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Application.GetObject(&#8220;Data.InternalTag1&#8221;).Value =\u00a0 Application.GetObject(&#8220;Data.InternalTag1&#8221;).Value +1<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Else<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Application.GetObject(&#8220;Data.InternalTag1&#8221;).Value = 0<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 End if<\/span><\/p>\n<p>How to do it:<\/p>\n<p><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Set Tag1 = Application.GetObject(&#8220;Data.InternalTag1&#8221;)<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Dim Valor<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Value = Tag1.Value<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 If Value <= 10 then<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Tag1.Value = Valor +1<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Else<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Tag1.Value = 0<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 End if<\/span><\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Animations on screen <\/span><\/p>\n<p>Never overlap several Figures to create animations. The right way to do it is to use just one Figure, and then create a link at <span style=\"font-style: italic\">FileName<\/span> property. Also, whenever you need a demo tag to animate a certain screen object, you should use a tag from the Viewer, because then the Viewer will not need to constantly access the Server to search for this tag&#8217;s value.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Historical E3Chart <\/span><\/p>\n<p>Configure the query to return only the fields that will be used in the Chart. Preferably, use E3Chart&#8217;s automatic query option, because it will return only the necessary data, given the time limits configured on the horizontal axes.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Complex figures <\/span><\/p>\n<p>Some image files are highly complex. This is the case of WMF files, which can lead animations to underperform, especially regarding backgrounds and colors. It is better to simplify these objects, so that the animations will be lighter. It is also advisable to use small, compact image files (for example, PNG or JPG), because the larger the file, the longer it will take to be transferred to the remote Viewer. Lastly, use the transparency resource carefully, especially when dealing with large figures, because this resource takes up a lot of processing.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Scripts sizes <\/span><\/p>\n<p>Avoid longer scripts, and prefer small, simpler ones. However, you should notice that the number of lines in a script do not always indicate better performance, because some single-line operations (such as a script that performs a synchronous write in an I\/O tag, or access to the database, for example) can take a considerably long time to process.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Defragmentation<\/span><\/p>\n<p>Use the defragmentation option for files belonging to the Domain, especially in very large applications. They can be significantly compacted, and this will enhance their performance.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Changing links between screen objects and Server objects at runtime <\/span><\/p>\n<p>This task demands a lot of processing from the Viewer, because it will deactivate and reactivate links with Server objects. To change links between screen objects and Server objects, you should use the screens&#8217; OnPreShow event, because this is where the screen objects&#8217; links have not yet been activated.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Communication<\/span><\/p>\n<p>Some points to ponder regarding communication settings:<\/p>\n<ul>\n<li><span style=\"text-decoration: underline;font-weight: bold;font-style: italic\">EnableDeadBand<\/span>: disable this property only when it is essential that E3 receive all reads performed by the driver (even when there is no change in value), such as when acquiring digital events.<\/li>\n<li><span style=\"text-decoration: underline;font-weight: bold\">Scan<\/span>: when configuring the tags&#8217; scan, you must take into consideration how important this information is to the application&#8217;s logic. That is, you must prioritize tags whose variation is larger, or whose usage is more important, by using smaller scan times. Another thing to consider is the type of physical quantity being handled; adequate scan to this quantity&#8217;s variation time (for example, when reading the room temperature).<\/li>\n<li><span style=\"text-decoration: underline;font-weight: bold\">Time-out<\/span>: check for the occurrence of time-outs during communication. Time-outs are time intervals lost by the driver when trying to communicate without an answer; many times, this happens because of hardware problems, such as connection issues, cables, noise, etc. Retries are not always the best solution for this case, because this resource is not acting in the problem&#8217;s source.<\/li>\n<li><span style=\"text-decoration: underline;font-weight: bold\">Blocks<\/span>: whenever possible, use Block tags to optimize the communication with the device. In addition, you must try to group blocks according to its use on screen. And whenever available in the driver, use superblocks (<span style=\"font-style: italic\">EnableReadGrouping <\/span>property).<\/li>\n<li><span style=\"text-decoration: underline;font-weight: bold\">Synchronous Writes<\/span>: only use them when really necessary. This type of write forces the script to wait for confirmation from the device before resuming its execution. E3 allows writes performed via scripts to be asynchronous, that is, write will be performed without waiting for confirmation from the device, by using <span style=\"font-style: italic\">WriteSyncMode <\/span>property in the I\/O driver and <span style=\"font-style: italic\">SyncWrite <\/span>property in the OPC tag.<\/li>\n<li><span style=\"text-decoration: underline;font-weight: bold;font-style: italic\">AdviseType<\/span>: set this option as <span style=\"font-style: italic\">AlwaysInAdvise <\/span>only when the tag&#8217;s value must be updated all the time. Otherwise, set is as <span style=\"font-style: italic\">AdviseWhenLinked<\/span>, and E3 will activate the tag&#8217;s communication whenever necessary.<\/li>\n<li><span style=\"text-decoration: underline;font-weight: bold;font-style: italic\">BlockMode<\/span>: this property from OPC Tag Group controls how OPC tags are both activated and deactivated. When enabled, OPC tags are first grouped and then registered in the OPC Server (by the end of the group&#8217;s activation). When disabled, the tags are registered individually in the Server as soon as they are activated; this takes a considerably longer time. On deactivation, the same thing happens: when BlockMode is on, all tags are removed at the same time by the end of the OPC group&#8217;s deactivation. When it is off, the tags are removed individually, as soon as each tag is deactivated.<\/li>\n<li><strong>Pool of IOServer Processes:<\/strong>\u00a0In applications with hundreds of Drivers, all resources needed to execute IOServer processes for each Driver may consume operating system\u2019s capacity. In these cases, it may be necessary to enable a\u00a0<a href=\"https:\/\/kb.elipse.com.br\/en\/pool-of-ioserver-processes\/\"><strong>Pool of IOServer Processes<\/strong><\/a>\u00a0on\u00a0<strong>Properties<\/strong>\u00a0tab of a Domain configuration.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Historic<\/span><\/p>\n<p>When configuring the historic, set indexes to accelerate the speed of queries performed in the table. If the application has several historics, you can do one of the following to enhance its performance:<\/p>\n<ul>\n<li><span style=\"font-weight: bold\">Create more than one DB server<\/span>: split historics into different DB servers when the application has too many historics, and they execute a great deal of writes in the database.<\/li>\n<li><span style=\"font-weight: bold\">Connect to pre-existing tables<\/span>: create the historics&#8217; struscture via E3, and then reconfigure the historic to connect to a pre-existing table. This will narrow down the number of operations performed by the historic to connect to the tabe, thus optimizing its initialization.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Queries<\/span><\/p>\n<p><span style=\"font-weight: bold\">Viewer queries<\/span>: whenever you need to use a query via scripts in the Viewer (by using <span style=\"font-style: italic\">GetADORecordset <\/span>method), and the returned data is static, you should perform this query only once, and then store this data in Viewer tags. For example:<br \/>\n<br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Set Consulta = Application.GetObject(&#8220;Dadta.Query1&#8221;)<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Set Tag = Application.Item(&#8220;InternalTag1&#8221;)<\/span><br style=\"font-style: italic\" \/><span style=\"font-style: italic\">\u00a0\u00a0\u00a0\u00a0 Tag.Value = Consulta.GetADORecordSet()<\/span><\/p>\n<p><span style=\"font-weight: bold\">Asynchronous queries<\/span>: to access the data from a Query via scripts (which can return too much data, or even several queries), you can use <span style=\"font-style: italic\"><a href=\"https:\/\/kb.elipse.com.br\/en\/kb65651-using-the-getasyncadorecordset-method\/\">GetAsyncADORecordset<\/a> <\/span>method. This method, unlike <span style=\"font-style: italic\">GetADORecordSet<\/span>, does not hang the script while the query&#8217;s result had not been loaded. Instead, script execution continues, and the query&#8217;s result is returned at <span style=\"font-style: italic\">OnAsyncQueryFinish <\/span>event.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Stored Procedures<\/span><\/p>\n<p>Sometimes, due to the complexity of the desired query, you may benefit from creating a <a href=\"https:\/\/kb.elipse.com.br\/en\/kb-102503-replacing-elipse-e3-queries-with-stored-procedures-in-the-database\/\">stored procedure<\/a> in the database, and leave E3 to just execute it. Therefore, all processing generated by this query will be distinct from E3.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Slow applications? Screens taking too long to open? Animations hanging? In this article, we will share some tips with you for better development that will help you avoid this kind&hellip;<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[757],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Performance tips for E3. - Elipse Knowledgebase<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Performance tips for E3.\" \/>\n<meta property=\"og:description\" content=\"Slow applications? Screens taking too long to open? Animations hanging? In this article, we will share some tips with you for better development that will help you avoid this kind&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-25T20:40:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-13T13:42:25+00:00\" \/>\n<meta name=\"author\" content=\"Paulo Gustavo S\u00fcffert\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paulo Gustavo S\u00fcffert\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\"},\"author\":{\"name\":\"Paulo Gustavo S\u00fcffert\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/8517ae12d1613d5a70f61b30399b5090\"},\"headline\":\"Performance tips for E3.\",\"datePublished\":\"2019-03-25T20:40:42+00:00\",\"dateModified\":\"2021-04-13T13:42:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\"},\"wordCount\":1412,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"Other\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\",\"url\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\",\"name\":\"[:pt]Performance tips for E3.[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:40:42+00:00\",\"dateModified\":\"2021-04-13T13:42:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Performance tips for E3.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/8517ae12d1613d5a70f61b30399b5090\",\"name\":\"Paulo Gustavo S\u00fcffert\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ce04e818ef4126e9cba08720cfcfbf2a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ce04e818ef4126e9cba08720cfcfbf2a?s=96&d=mm&r=g\",\"caption\":\"Paulo Gustavo S\u00fcffert\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/pgustavo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Performance tips for E3. - Elipse Knowledgebase","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Performance tips for E3.[:] - Elipse Knowledgebase","og_description":"Slow applications? Screens taking too long to open? Animations hanging? In this article, we will share some tips with you for better development that will help you avoid this kind&hellip;","og_url":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:40:42+00:00","article_modified_time":"2021-04-13T13:42:25+00:00","author":"Paulo Gustavo S\u00fcffert","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Paulo Gustavo S\u00fcffert","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/"},"author":{"name":"Paulo Gustavo S\u00fcffert","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/8517ae12d1613d5a70f61b30399b5090"},"headline":"Performance tips for E3.","datePublished":"2019-03-25T20:40:42+00:00","dateModified":"2021-04-13T13:42:25+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/"},"wordCount":1412,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["Other"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/","url":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/","name":"[:pt]Performance tips for E3.[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:40:42+00:00","dateModified":"2021-04-13T13:42:25+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/en\/performance-tips-for-e3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Performance tips for E3."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/8517ae12d1613d5a70f61b30399b5090","name":"Paulo Gustavo S\u00fcffert","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ce04e818ef4126e9cba08720cfcfbf2a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ce04e818ef4126e9cba08720cfcfbf2a?s=96&d=mm&r=g","caption":"Paulo Gustavo S\u00fcffert"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/pgustavo\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2676"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=2676"}],"version-history":[{"count":4,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2676\/revisions"}],"predecessor-version":[{"id":12103,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2676\/revisions\/12103"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=2676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=2676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=2676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}