Desempenho do Rhino

Tava lendo no site do Rhino sobre o uso de contexts e dos scopes. Queria usar o Rhino num projeto, para executar alguns códigos dinâmicos, como metodos de pesquisa em banco de dados, que mudam com alguma frequencia dependendo de um cliente para outro. Só que no site diz que é muito custoso a chamada ao metodo initStandardObjects() do objeto Context. Então, alguem tem alguma sugestão sobre o uso de isso, pq queria usar em algumas partes dinamicas do codigo, ou seja poderia existir duas chamdas de scripts num mesmo fluxo de execução.

Toda sugestão é válida,

Alberto

[quote=alots_ssa]Tava lendo no site do Rhino sobre o uso de contexts e dos scopes. Queria usar o Rhino num projeto, para executar alguns códigos dinâmicos, como metodos de pesquisa em banco de dados, que mudam com alguma frequencia dependendo de um cliente para outro. Só que no site diz que é muito custoso a chamada ao metodo initStandardObjects() do objeto Context. Então, alguem tem alguma sugestão sobre o uso de isso, pq queria usar em algumas partes dinamicas do codigo, ou seja poderia existir duas chamdas de scripts num mesmo fluxo de execução.

Toda sugestão é válida,
[/quote]

Quanto alguem fala que algo é lento é preciso desconfiar. É lento comparado com o quê ?
Todo o mundo fala que reflection é lento. Tudo bem, mas em muitas coisas é a única forma de fazer. Então ser lento é um problema menor que o problema que usar reflection resolve.
No seu caso, será que essa lentidão é um problema maior do que não ter o codigo dinamico ? Será que vale a pena abdicar da tecnica de script apenas pq não-sei-o-q-lá é lento ?

Por outro lado, se não nenhuma forma mais rápida que faça a mesma coisa é absurdo argumentar que a única forma de fazer é lenta. O ponto é portanto saber se existe uma forma alternativa a usar script.

O Rhino tem a vantagem de vir com o JSE6 , mas existem outras opções de script como groovy ou jruby. No java 7 que sairá até ao fim do ano virão muitos mais engines de script.
Acho que deve pensar bem se é usar script que vc realmente quer. Não será que usar um xml com as frases SQL não resolve ? Será que usar uma classe normal não resolve ? Será que usar uma classe normal carregada dinamicamente não resolve ? Se nada disto resolver e/ou quiser ir pelo script pense que existem diversos engines e que a performance de cada um é diferente. Faça alguns testes e decida-se pelo menos lento.

Na verdade não acha que seja lento a ponto de me fazer desistir, mas se na propria documentação do projeto avisa que é importante se preocupar com isto, simplesmente me preocupei :). No entanto, seguir uma sugestão deles mesmos de usar o que eles chamam de shared scope, que é vc chamar o initStandarObjects uma vez, e nas proximas criações apenas o context.newObject(sharedScope), acho que vai resolver. Em relação a utilização ou não do script, acho uma boa alternativa, pq posso manipular esses codigos dinâmicos mais facilmente, e ainda com todos objetos envolvidos. Valeu pela ajuda

Alberto