Skip to content
This repository has been archived by the owner on Mar 12, 2018. It is now read-only.

Aumentando pool de Operações de 2048 para 131072 #101

Merged
merged 2 commits into from
Jun 6, 2017

Conversation

AlissonSteffens
Copy link
Member

@AlissonSteffens AlissonSteffens commented Jun 6, 2017

Porque alguns exemplos davam "out off bounds" e não fica legal pro 3D
Resolve o problema com o Exemplo Fractal da Issue UNIVALI-LITE/Portugol-Studio#183

@AlissonSteffens AlissonSteffens changed the title aumentando pool de Operações de 2048 para 131072 Aumentando pool de Operações de 2048 para 131072 Jun 6, 2017
Copy link
Contributor

@AdsonEsteves AdsonEsteves left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Não vejo problema

@@ -30,7 +30,7 @@
{
private final PoolOperacoesGraficas POOL_OPERACOES_GRAFICAS = new PoolOperacoesGraficas();

private final OperacaoGrafica[] operacoes = new OperacaoGrafica[2048];
private final OperacaoGrafica[] operacoes = new OperacaoGrafica[131072];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 coisas para revisar:

1 - porque você está usando este número? É algo místico? Um número cabalístico? Você jogou búzios e o resultado foi 131072? 😄

2 - O array deveria ter sido declarado com a constante QUANTIDADE_MAXIMA_OPERACOES ao invés de usar o número cabalístico diretamente. Assim, para mudar a quantidade de operações bastaria alterar o valor da constante.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@elieserdejesus, aumentamos este valor para que fosse possível rodar o exemplo que desenha a nave do Star Wars em 3D. Do jeito que estava ele estourava o cache porque a nave tem muitos vértices pra serem desenhados ao mesmo tempo.

131072 = 2^17

Na verdade, poderíamos transformar este vetor em uma lista, assim não precisaríamos nos preocupar com o tamanho. Bastaria definir um tamanho inicial. Porém, tirando o exemplo da nave, que extrapola bastante o padrão, ter um vetor com este tamanho deve dar conta do recado.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@noschang , se usar uma lista é importante lembrar de não usar iterador (implícita (com for each) ou explicitamente) para evitar zilhões de instâncias de iteradores alocadas durante a execução.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@elieserdejesus, bem lembrado. Mas acho que por hora podemos manter como vetor. Depois desse release podemos fazer uma discussão entre a equipe e ver se vale a pena transformar em lista.

Pontos positivos:

  • Tira a limitação que o usuário tem na quantidade de operações gráficas que são permitidas
  • Permite renderizar exemplos mais complexos
  • Elimina a necessidade de termos que modificar o código fonte toda vezes que algum exemplo quebrar por causa do tamanho da cache

Pontos negativos:

  • Introduzirá um pequeno "lag" no programa toda vez que a lista precisar aumentar de tamanho (o que imagino que não deve ocorre com tanta frequência)
  • Sem um limitador de tamaho, o usuário poderá instanciar operações gráficas até estourar o Heap do Studio, que hoje está fixado em 256MB

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@elieserdejesus , @noschang Devo dar merge então???

@@ -30,7 +30,7 @@
{
private final PoolOperacoesGraficas POOL_OPERACOES_GRAFICAS = new PoolOperacoesGraficas();

private final OperacaoGrafica[] operacoes = new OperacaoGrafica[2048];
private final OperacaoGrafica[] operacoes = new OperacaoGrafica[131072];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AlissonSteffens , falta declarar o array usando a constante ao invés de usar o número mágico.

@AlissonSteffens AlissonSteffens merged commit a816fcb into master Jun 6, 2017
@AlissonSteffens AlissonSteffens deleted the aumentandopooloperacoes branch June 6, 2017 17:45
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants