{"id":2667,"date":"2019-03-25T17:40:39","date_gmt":"2019-03-25T20:40:39","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/dicas-de-performance-para-o-e3\/"},"modified":"2021-04-13T10:43:04","modified_gmt":"2021-04-13T13:43:04","slug":"dicas-de-performance-para-o-e3","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/dicas-de-performance-para-o-e3\/","title":{"rendered":"Dicas de Performance para o E3."},"content":{"rendered":"<div style=\"text-align: justify\">\n<p>Lentid\u00e3o na aplica\u00e7\u00e3o? Demora para abrir telas? Anima\u00e7\u00f5es trancando? Este artigo passa algumas dicas de bom desenvolvimento, que ajudam a evitar este tipo de problema de performance em aplica\u00e7\u00f5es do E3.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Eventos <span style=\"font-style: italic\">WhileRunning<\/span><\/span><\/p>\n<p>Evite a utiliza\u00e7\u00e3o de scripts c\u00edclicos. Algumas vezes, scripts desta natureza s\u00e3o utilizados a fim de realizar alguma anima\u00e7\u00e3o em tela, ou de obter o valor atual de determinada propriedade ou equa\u00e7\u00e3o. Ao inv\u00e9s de criar um evento c\u00edclico para realizar essas fun\u00e7\u00f5es (o que pode gerar uma baixa performance no aplicativo), na maioria das vezes pode-se utilizar associa\u00e7\u00f5es, que far\u00e3o o mesmo papel sem prejudicar o sistema. Isto acontece porque as associa\u00e7\u00f5es s\u00f3 s\u00e3o verificadas quando o valor da fonte (ou propriedade) \u00e9 alterado.<\/p>\n<p>Caso n\u00e3o seja poss\u00edvel utilizar associa\u00e7\u00f5es para implementar o desejado, \u00e9 recomend\u00e1vel criar um evento de usu\u00e1rio que somente seja executado quando uma condi\u00e7\u00e3o seja satisfeita.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Acessando objetos do Servidor atrav\u00e9s do Viewer<\/span><\/p>\n<p>Toda vez que o valor de um tag ou de uma propriedade do Servidor \u00e9 solicitado por script no Viewer atrav\u00e9s do m\u00e9todo <span style=\"font-style: italic\">Application.GetObject<\/span>, \u00e9 feita uma comunica\u00e7\u00e3o com o Servidor. Portanto, quanto mais vezes for utilizado este m\u00e9todo, maior ser\u00e1 o n\u00famero de comunica\u00e7\u00f5es entre o Viewer e o Servidor, o que refletir\u00e1 em uma queda de performance. Por\u00e9m, existem algumas maneiras de reduzir o n\u00famero de <span style=\"font-style: italic\">Application.GetObject<\/span>. Por exemplo:<\/p>\n<ul>\n<li>Substitua equa\u00e7\u00f5es do script por links quando poss\u00edvel<\/li>\n<li>Use tags (demo, interno, crono, timer) do Viewer em vez de tags do Servidor<\/li>\n<li>Crie propriedades nos XControls para acessar propriedades dos XObjects<\/li>\n<\/ul>\n<p>Outra sugest\u00e3o para otimizar este acesso aos dados \u00e9 utilizar o comando <span style=\"font-style: italic\">Set <\/span>para criar uma refer\u00eancia ao objeto, e copiar o valor da propriedade para uma vari\u00e1vel interna no in\u00edcio do script. Veja os exemplos a seguir.<\/p>\n<p>Maneira n\u00e3o indicada:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">If Application.GetObject(\"Dados.TagInterno1\").Value <= 10 then\r\nApplication.GetObject(\"Dados.TagInterno1\").Value = Application.GetObject(\"Dados.TagInterno1\").Value +1\r\nElse\r\nApplication.GetObject(\"Dados.TagInterno1\").Value = 0\r\nEnd if<\/pre>\n<p>Maneira indicada:<span style=\"font-style: italic\"> \u00a0\u00a0\u00a0<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Set Tag1 = Application.GetObject(\"Dados.TagInterno1\")\u00a0\u00a0\u00a0\u00a0 \r\nDim Valor\u00a0\u00a0\u00a0\u00a0 \r\nValor = Tag1.Value\u00a0\u00a0\u00a0\u00a0\r\n If Valor <= 10 then\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \r\n    Tag1.Value = Valor +1\u00a0\u00a0\u00a0\u00a0 \r\n Else\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \r\n    Tag1.Value = 0\u00a0\u00a0\u00a0\u00a0 \r\nEnd if<\/pre>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Anima\u00e7\u00f5es de tela<\/span><\/p>\n<p>Nunca sobreponha v\u00e1rios objetos do tipo Figura para criar anima\u00e7\u00f5es. A maneira correta \u00e9 usar apenas um objeto Figura, e criar uma associa\u00e7\u00e3o na propriedade <span style=\"font-style: italic\">FileName<\/span>. E sempre que for necess\u00e1rio um tag demo para animar algum objeto de tela, \u00e9 indicado utilizar um tag do Viewer, pois desta forma o Viewer n\u00e3o precisa acessar constantemente o Servidor a fim de buscar o valor deste tag.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">E3Chart hist\u00f3rico<\/span><\/p>\n<p>Configure a consulta para retornar apenas os campos que ser\u00e3o utilizados no Chart. D\u00ea prefer\u00eancia \u00e0 utiliza\u00e7\u00e3o da op\u00e7\u00e3o de consulta autom\u00e1tica do E3Chart, pois ela retorna apenas os dados necess\u00e1rios, considerando-se os limites de tempo configurados nos eixos horizontais.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Figuras complexas<\/span><\/p>\n<p>Alguns arquivos de imagem possuem um n\u00edvel de complexidade muito grande. Este \u00e9 o caso dos arquivos WMF, que podem acarretar uma baixa performance em anima\u00e7\u00f5es, especialmente com rela\u00e7\u00e3o a preenchimento ou cor. \u00c9 sempre recomend\u00e1vel simplificar esses objetos, a fim de deixar suas anima\u00e7\u00f5es mais leves. Tamb\u00e9m \u00e9 prefer\u00edvel usar arquivos de imagem pequenos e compactados (por exemplo, PNG ou JPG), pois quanto maior o arquivo, mais demorado ser\u00e1 a transfer\u00eancia deste para o Viewer remoto. Por fim, use criteriosamente o recurso de transpar\u00eancia, especialmente em figuras muito grandes, pois este \u00e9 um recurso que exige muito processamento.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Tamanho de scripts<\/span><\/p>\n<p>Evite scripts muito grandes, dando prefer\u00eancia a scripts pequenos e enxutos. Entretanto, cabe salientar que nem sempre o n\u00famero de linhas \u00e9 indicador de performance, pois algumas opera\u00e7\u00f5es de apenas uma linha (como um script que fa\u00e7a uma escrita s\u00edncrona num tag de comunica\u00e7\u00e3o, ou um acesso a banco de dados, por exemplo) podem significar um tempo grande de processamento.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Desfragmenta\u00e7\u00e3o<\/span><\/p>\n<p>Utilize a op\u00e7\u00e3o de desfragmenta\u00e7\u00e3o dos arquivos pertencentes ao Dom\u00ednio, especialmente em aplica\u00e7\u00f5es muito grandes. A compacta\u00e7\u00e3o pode ser significativa, trazendo tamb\u00e9m benef\u00edcios a performance.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Alterando links entre objetos de tela e objetos do Servidor em runtime<\/span><\/p>\n<p>Esta tarefa exige muito processamento do Viewer, pois o obriga desativar e reativar associa\u00e7\u00f5es com objetos do Servidor. O local ideal para efetuar altera\u00e7\u00f5es de links entre objetos de tela e objetos do Servidor \u00e9 o evento <span style=\"font-style: italic\">OnPreShow <\/span>das telas, pois neste instante os links dos objetos da tela ainda n\u00e3o foram ativados.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Comunica\u00e7\u00e3o<\/span><\/p>\n<p>Alguns pontos devem ser observados com rela\u00e7\u00e3o \u00e0 configura\u00e7\u00e3o da comunica\u00e7\u00e3o:<\/p>\n<ul>\n<li><span style=\"font-weight: bold;font-style: italic\">EnableDeadBand<\/span>: desabilite esta propriedade somente quando for imprescind\u00edvel o recebimento por parte do E3 de todas as leituras executadas pelo driver (mesmo quando n\u00e3o houver altera\u00e7\u00e3o de valor), como por exemplo na aquisi\u00e7\u00e3o de eventos digitais.<\/li>\n<li><span style=\"font-weight: bold\">Scan<\/span>: deve-se configurar o scan dos tags levando-se em considera\u00e7\u00e3o a import\u00e2ncia desta informa\u00e7\u00e3o \u00e0 l\u00f3gica de aplica\u00e7\u00e3o. Ou seja, \u00e9 necess\u00e1rio priorizar tags cuja varia\u00e7\u00e3o \u00e9 maior ou cuja utiliza\u00e7\u00e3o seja mais importante, utilizando tempos de scan menores. Outro ponto a ser considerado \u00e9 o tipo de grandeza que est\u00e1 sendo tratada, adequando o scan ao tempo de varia\u00e7\u00e3o desta grandeza (por exemplo, a leitura de uma temperatura ambiente).<\/li>\n<li><span style=\"font-weight: bold\">Time-out<\/span>: verifique a ocorr\u00eancia de time-outs durante a comunica\u00e7\u00e3o. O time-out \u00e9 um intervalo de tempo perdido pelo driver tentando comunicar-se sem resposta; muitas vezes, isto se deve a problemas de hardware, como conex\u00e3o, cabo, ru\u00eddo etc. Nem sempre a utiliza\u00e7\u00e3o da op\u00e7\u00e3o de retentativas \u00e9 a melhor solu\u00e7\u00e3o, pois este recurso n\u00e3o est\u00e1 agindo na fonte do problema.<\/li>\n<li><span style=\"font-weight: bold\">Blocos<\/span>: sempre que poss\u00edvel, utilize tags do tipo bloco, para otimizar a comunica\u00e7\u00e3o com o equipamento. Al\u00e9m disso, deve-se procurar agrupar os blocos de acordo com a sua utiliza\u00e7\u00e3o em tela. E quando dispon\u00edvel pelo driver, utilize a op\u00e7\u00e3o de superblocos (propriedade <span style=\"font-style: italic\">EnableReadGrouping<\/span>).<\/li>\n<li><span style=\"font-weight: bold\">Escritas S\u00edncronas<\/span>: s\u00f3 utilize escritas s\u00edncronas quando realmente necess\u00e1rio. Este tipo de escrita for\u00e7a o script a aguardar por uma confirma\u00e7\u00e3o do equipamento antes de prosseguir com a sua execu\u00e7\u00e3o. O E3 permite que mesmo escritas realizadas por script sejam ass\u00edncronas, ou seja, a escrita ser\u00e1 feita sem esperar por uma confirma\u00e7\u00e3o do equipamento, usando a propriedade <span style=\"font-style: italic\">WriteSyncMode <\/span>no driver de comunica\u00e7\u00e3o e <span style=\"font-style: italic\">SyncWrite <\/span>no tag de comunica\u00e7\u00e3o OPC.<\/li>\n<li><span style=\"font-weight: bold;font-style: italic\">AdviseType<\/span>: altere esta propriedade para a op\u00e7\u00e3o <span style=\"font-style: italic\">AlwaysInAdvise <\/span>somente quando for imprescind\u00edvel que o valor do tag seja atualizado o tempo todo. Se n\u00e3o, deixe-a em <span style=\"font-style: italic\">AdviseWhenLinked<\/span>, e o E3 se encarregar\u00e1 de ativar a comunica\u00e7\u00e3o do tag quando necess\u00e1rio.<\/li>\n<li><span style=\"font-weight: bold;font-style: italic\">BlockMode<\/span>: essa propriedade do Grupo de Tags OPC controla o modo de ativa\u00e7\u00e3o e desativa\u00e7\u00e3o dos tags OPC. Quando habilitada, os tags OPC s\u00e3o primeiramente agrupados e logo ap\u00f3s cadastrados no Servidor OPC (ao fim da ativa\u00e7\u00e3o do grupo). Quando desabilitada, os tags s\u00e3o cadastrados um a um no Servidor, na medida em que v\u00e3o sendo ativados, o que \u00e9 mais demorado. Na desativa\u00e7\u00e3o acontece o mesmo: com o <span style=\"font-style: italic\">BlockMode <\/span>ligado, os tags s\u00e3o removidos em conjunto ao fim da desativa\u00e7\u00e3o do grupo OPC. Quando desligado, os tags s\u00e3o removidos um por um, na medida em que cada tag \u00e9 desativado.<\/li>\n<li><strong>Pool de Processos IOServer: <\/strong>em aplicativos com centenas de Drivers, os recursos necess\u00e1rios para executar os processos IOServer para cada Driver podem esgotar a capacidade do sistema operacional. Nestes casos, pode ser necess\u00e1rio habilitar o\u00a0<a href=\"https:\/\/kb.elipse.com.br\/en\/pool-de-processos-ioserver\/\">Pool de Processos IOServer<\/a>\u00a0na aba\u00a0Propriedades\u00a0da configura\u00e7\u00e3o do Dom\u00ednio.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Hist\u00f3ricos<\/span><\/p>\n<p>Ao configurar o hist\u00f3rico, defina \u00edndices para acelerar a velocidade das consultas feitas na tabela. Caso a aplica\u00e7\u00e3o possua um grande n\u00famero de hist\u00f3ricos, existem algumas dicas para melhorar sua performance:<\/p>\n<ul>\n<li><span style=\"font-weight: bold\">Cria\u00e7\u00e3o de mais de um servidor DB<\/span>: separe hist\u00f3ricos em diferentes servidores DB quando a aplica\u00e7\u00e3o possui muitos hist\u00f3ricos, e estes executam um grande n\u00famero de escritas no banco.<\/li>\n<li><span style=\"font-weight: bold\">Conex\u00e3o com tabelas j\u00e1 existentes<\/span>: crie a estrutura dos hist\u00f3ricos pelo E3 e depois reconfigure o hist\u00f3rico para conectar-se a uma tabela j\u00e1 existente. Isto resumir\u00e1 o n\u00famero de opera\u00e7\u00f5es realizadas pelo hist\u00f3rico para se conectar \u00e0 tabela, otimizando sua inicializa\u00e7\u00e3o.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Consultas<\/span><\/p>\n<p><span style=\"font-weight: bold\">Consultas no Viewer<\/span>: sempre que houver necessidade de utilizar uma consulta por script no Viewer (atrav\u00e9s do m\u00e9todo <span style=\"font-style: italic\">GetADORecordset<\/span>), e os dados retornados forem est\u00e1ticos, \u00e9 aconselh\u00e1vel que essa consulta seja realizada apenas uma vez, e que os dados retornados por ela sejam armazenados em tags do Viewer. Por exemplo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Set Consulta = Application.GetObject(\"Dados.Consulta1\")\u00a0\u00a0\u00a0\u00a0 \r\nSet Tag = Application.Item(\"TagInterno1\")\u00a0\u00a0\u00a0\u00a0 \r\nTag.Value = Consulta.GetADORecordSet()<\/pre>\n<p><span style=\"font-weight: bold\">Consultas ass\u00edncronas<\/span>: uma boa op\u00e7\u00e3o para acessar os dados de uma Consulta por script (que retornam muitos dados, ou mesmo v\u00e1rias consultas) \u00e9 a utiliza\u00e7\u00e3o do m\u00e9todo <a href=\"https:\/\/kb.elipse.com.br\/kb65651-utilizando-o-metodo-getasyncadorecordset\/\"><span style=\"font-style: italic\">GetAsyncADORecordset<\/span><\/a>. Este m\u00e9todo, diferentemente do m\u00e9todo <span style=\"font-style: italic\">GetADORecordSet<\/span>, n\u00e3o trava o script enquanto o resultado da consulta n\u00e3o for carregado. Ao inv\u00e9s disso, a execu\u00e7\u00e3o do script prossegue, e o resultado da consulta ser\u00e1 retornado no evento <span style=\"font-style: italic\">OnAsyncQueryFinish<\/span>.<\/p>\n<p><span style=\"text-decoration: underline;font-weight: bold\">Stored Procedures<\/span><\/p>\n<p>Algumas vezes, devido \u00e0 complexidade da consulta desejada, pode ser vantajoso criar uma <span style=\"font-style: italic\">stored procedure <\/span>no banco de dados, ficando a cargo do E3 somente a fun\u00e7\u00e3o de execut\u00e1-la. Assim, todo o processamento gerado por essa consulta estar\u00e1 separado do E3. O artigo <a href=\"https:\/\/kb.elipse.com.br\/substituindo-consultas-por-stored-procedures-no-banco-de-dados-do-elipse-e3\/\">KB-102503: Substituindo consultas do Elipse E3 por Stored Procedures no banco de dados<\/a>, exemplifica como substituir determinada consulta por uma Stored Procedure em um banco SQL Server.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Lentid\u00e3o na aplica\u00e7\u00e3o? Demora para abrir telas? Anima\u00e7\u00f5es trancando? Este artigo passa algumas dicas de bom desenvolvimento, que ajudam a evitar este tipo de problema de performance em aplica\u00e7\u00f5es do&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":[617],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dicas de Performance para o 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\/dicas-de-performance-para-o-e3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dicas de Performance para o E3.\" \/>\n<meta property=\"og:description\" content=\"Lentid\u00e3o na aplica\u00e7\u00e3o? Demora para abrir telas? Anima\u00e7\u00f5es trancando? Este artigo passa algumas dicas de bom desenvolvimento, que ajudam a evitar este tipo de problema de performance em aplica\u00e7\u00f5es do&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-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:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-13T13:43:04+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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/\"},\"author\":{\"name\":\"Paulo Gustavo S\u00fcffert\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/8517ae12d1613d5a70f61b30399b5090\"},\"headline\":\"Dicas de Performance para o E3.\",\"datePublished\":\"2019-03-25T20:40:39+00:00\",\"dateModified\":\"2021-04-13T13:43:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/\"},\"wordCount\":1584,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"Outros\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/\",\"url\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/\",\"name\":\"[:pt]Dicas de Performance para o E3.[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:40:39+00:00\",\"dateModified\":\"2021-04-13T13:43:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dicas de Performance para o 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":"Dicas de Performance para o 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\/dicas-de-performance-para-o-e3\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Dicas de Performance para o E3.[:] - Elipse Knowledgebase","og_description":"Lentid\u00e3o na aplica\u00e7\u00e3o? Demora para abrir telas? Anima\u00e7\u00f5es trancando? Este artigo passa algumas dicas de bom desenvolvimento, que ajudam a evitar este tipo de problema de performance em aplica\u00e7\u00f5es do&hellip;","og_url":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:40:39+00:00","article_modified_time":"2021-04-13T13:43:04+00:00","author":"Paulo Gustavo S\u00fcffert","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Paulo Gustavo S\u00fcffert","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/"},"author":{"name":"Paulo Gustavo S\u00fcffert","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/8517ae12d1613d5a70f61b30399b5090"},"headline":"Dicas de Performance para o E3.","datePublished":"2019-03-25T20:40:39+00:00","dateModified":"2021-04-13T13:43:04+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/"},"wordCount":1584,"commentCount":2,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["Outros"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/","url":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/","name":"[:pt]Dicas de Performance para o E3.[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:40:39+00:00","dateModified":"2021-04-13T13:43:04+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/dicas-de-performance-para-o-e3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Dicas de Performance para o 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\/2667"}],"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=2667"}],"version-history":[{"count":16,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2667\/revisions"}],"predecessor-version":[{"id":12104,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2667\/revisions\/12104"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=2667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=2667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=2667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}