GAADT para a WEB

Prezados amigos do fórum,

Venho por meio deste apresentar algumas dúvidas e pedir aos “iluminados” alguma ajuda.

Desenvolvi durante um ano de pesquisa acadêmica um Algorítmo Genético (AG) para Tipos Abstratos de Dados, ou seja, nenhum pouco trivial quando comparado ao simples AG que costumamos estudar em Computação Evolucionária na maioria das vezes, onde os genes são arrays de bits (0 e 1), pelo contrário os genes deste AG são cadeias de caracteres não númericas como por exemplo, strings ou no meu caso XML.

Bom, este GAADT utiliza operações matemáticas que rodam em milhares de iterações, para poder chegar a um resultado satisfatório. Ele foi desenvolvido em puro Java e meu interesse é fazê-lo rodar na Web, entretanto, tenho que arranjar um jeito de diminuir seu tempo computacional que hoje é grande, antes de gerar um resultado.

Para tanto, imaginei utilizar JNI como camada intermediária entre meu código e uma linguagem nativa como por exemplo, C++ (que aguentaria a robustez dessas iterações e cálculos matemáticas) e desta para C# (na web) por exemplo. Contudo, o uso de JNI possui algumas desvantagens que vale a pena considerar, como por exemplo: 1)Curva de aprendizado difícil, 2) Um mero erro no código podería causar danos irreparáveis na JVM, 3) Ser um pouco lenta. Assim, trocar a linguagem ou deixar as funções noutra linguagem utilizando JNI, deixaria rápida apenas em milionésimos de segundos nas operações básicas que, escalonadas para um tempo total, não seria tão relevante para o usuário na Web, visto que a natureza do algorítmo em si demanda um tempo computacional muito grande. Sendo nenhum pouco satisfatória o uso de JNI neste caso.

Acredito também, que o uso de frameworks Java não resolvam meu problema, deixando ainda sim o processamento demorado.

Então pensei no uso de uma interface para que ela responda de maneira amigável para o usuário, então me falaram sobre telas assíncronas. Portanto, pergunto, alguém já as usou antes como forma de melhorar o tempo de resposta para o usuário?

Alguma idéia a parte disto? Ou mesmo outra idéia?

Todas são bem vindas…!

att

Olá,

A questão da tela assincrona que falaram para você deve ser um AJAX…

O AJAX não vai resolver o problema da performance, vai apenas ser mais amigável para o usuário…

É mais ou menos assim:

[color=darkblue]O usuário pede para computar o algorítimo e recebe uma tela… com uma imagem: PROCESSANDO…

De tempos em tempos… essa página volta ao servidor (automaticamente) para perguntar se já está pronto o trabalho … se estiver pronto… mostra o resultado… se nao… continua mostrando o PROCESSANDO…[/color]

basicamente isso…

Sobre a performance… usar C# nao vai fazer muita diferença… e talvez nem usando C++ vá fazer diferença…

A máquina virtual (JVM) tem uma série de otimizações, e em alguns casos pode executar códigos mais rápido do que programas compilados em C… por exemplo…

Para melhorar a performance… o que eu recomendaria é rever o algoritmo e verificar se pode ser otimizado…