Artigo
Robert Cemper · Abr. 21 2min de leitura

Globals - Comparar Embedded Python e ObjectScript

Este exemplo demonstra a diferença de quando você acessa globais diretamente do
Embedded Python (ePy) comparado com o ObjectScript nativo (ISOS).

Para tornar este demo operacional, eu inicio 2 jobs em background, que irão escrever
sequencialmente na global dedicada. Um método de controle comum dispara uma execução síncrona.
De forma similar, outro método stop & view irá interromper o fluxo de dados.

 

Os dois jobs executam em paralelo e a probabilidade de execução dos blocos sequencialmente é reduzida. Durante o desenvolvimento desta demo, eu detectei que o comando de JOB teve problemas com
ClassMethods escritos em Embedded Python (ePy).

AVISO:
Devido à Licença de Comunidade ser limitada em quantitativos de processador,
o início dos jobs em background pode falhar, especialmente se você possuir outras conexões
concorrentes.

Durante minha bateria de testes, eu descobri que o ePy obteve desempenho
~53% menor do que o código ISOS puro. 
Veja os exemplos abaixo.

O método de controle prepara processos em background e possui 3 comandos:

  • 0 .. para a execução dos jobs em background e apresenta os resultados mais recentes.
  • 1 .. interrompe os jobs em background e apresenta os resultados mais recentes
  • 2 .. executa a carga de dados nos jobs em background..
    • A carga de dados é interrompida após 60 segundos (caso não seja parado manualmente)
    • para evitar a "quebra" do Banco de Dados. 

Como testar o exemplo

Conecte no container utilizando o webterminal  
ou inicie uma sessão do IRIS no docker

   docker-compose exec iris iris session iris

ou utilize

Examplo

USER>do ##class(dc.rcc.ePYvsISOS).do()

JobStart ISOS #3841
JobStart  ePy #3842
Job Control [0=stop,1=view,2=go]: 2
Job Control [0=stop,1=view,2=go]: 1
^ePy(1,492029)=2022-03-11 20:49:32.851286
^ISOS(1,927383)=2022-03-11 20:49:32.851289

Job Control [0=stop,1=view,2=go]:
Job Control [0=stop,1=view,2=go]: 2
Job Control [0=stop,1=view,2=go]:
Job Control [0=stop,1=view,2=go]:
Job Control [0=stop,1=view,2=go]:
Job Control [0=stop,1=view,2=go]:
^ePy(2,4149270)=2022-03-11 20:50:54.620362
^ISOS(2,7719690)=2022-03-11 20:50:54.620371

Job Control [0=stop,1=view,2=go]:2
Job Control [0=stop,1=view,2=go]:
Job Control [0=stop,1=view,2=go]: 0
^ePy(3,3148765)=2022-03-11 20:50:54.620362
^ISOS(3,6714519)=2022-03-11 20:50:54.620371

 

Un agradecimiento especial a @Yuri Marx  por ayudarme.

English version

Video

Code Quality
 

2
0 26
Discussão (0)2
Entre ou crie uma conta para continuar