next up previous contents index
Next: Programação de Serviços Up: Programação de Cartas Previous: Programação de Cartas

Desempenho

O desempenho pode ser medido como sendo a diferença entre o desempenho da aplicação com e sem os envelopes que envolvem os seus objectos. Isto passa-se porque o código da aplicação continua a existir sem alterações relativamente ao momento da aplicação da primeira ferramenta prevista neste texto.

As medidas foram efectuadas utilizando programas onde se gerou todo o código das classes dos envelopes inline. Mesmo assim, existe ainda alguma degradação, se bem que menor que a alternativa de não expandir algumas invocações. Esta degradação depende fortemente do número de parâmetros do método invocado, assim como da dimensão do seu retorno.

A tabela 7.1 mostra o peso das invocações realizadas a objectos com e sem a presença de envelopes. As medidas têm em consideração a variação de parâmetros no método invocado (a escala vertical da tabela), assim como a variação da profundidade, na hierarquia de classes, a que o método a invocar se encontra (escala horizontal da tabela). A medição dependente da profundidade está relacionada com as conversões de tipos em tempo de execução, realizadas para suportar herança múltipla. As medidas correspondem exclusivamente a chamadas locais.

  
Table: Medidas do peso das invocações: cartas vs. envelopes/cartas.

O factor que mais contribui para a degradação do desempenho é a constante passagem das invocações pelos envelopes, quer os objectos a eles associados tenham características adicionais ou não. Se uma indirecção na invocação de um objecto remoto não contribui um intervalo de tempo significativo, quando comparado com o tempo de trânsito de mensagens na rede, o mesmo já não se passa numa invocação a um objecto local.

O facto de se terem várias comparações por invocação, traduzidas acima através da profundidade da hierarquia (uma comparação por cada nível), influi menos nos resultados que o facto de se passarem dez parâmetros em lugar de um. Por exemplo, para passar mais um parâmetro a degradação aumenta em cerca de 10%, enquanto a que corresponde ao aumento de um nível de hierarquia se situa nos 2%.



next up previous contents index
Next: Programação de Serviços Up: Programação de Cartas Previous: Programação de Cartas



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995