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.
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.