Galera, onde trabalho existe uma bridge em java, essa bridge acessa um banco de sensores de tempo em tempo e faz a conversão dos dados dos sensores em arquivos e assim popula um banco. A conversão não é nada muito complexa, nao é esse o ponto difícil da história.
Bom, digamos que a eficiencia dessa bridge não é muito boa(não fui eu que fiz o tal programa), um exemplo: essa bridge em java popula dados de 30 dias em 15 dias, enquanto uma versão antiga em C populava 1 ano em 6 MINUTOS!
O antigo programador(o que fez a bredge em java) nao trabalha mais aqui e pediram para que eu faça a conversão dessa bredge em java para C.
Vocês podem me indicar algum livro ou algumas dicas para isso? Pois creio que terei um longo caminho pela frente, afinal terei que fazer em C tudo que a pessoa fez em java. Tenho um conhecimento em java, mas nao tenho muita ideia de por onde começar no C.
Eu pensei nisso, porém fui perguntar ao meu professor de java(que trabalha com C) se uma aplicação em Java era recomendada para tal situação.
Ele afirmou que em C realmente se teria uma performace muito superior, porém nao sei se chega a ser tão absurda como foi encontrado.
Mas ordens são ordens, eles já perderam 1 ano esperando o programa ser feito pela antiga pessoa, pois ela afirmou que com java conseguiria fazer o que eles estavam precisando, creio que não querem arriscar em java novamente depois do que viram.
Contratar um programador C com bastante experiência em escrever programas que acessem base de dados. Mas se na empresa não tem ninguém que saiba C, o tal programador vai deixar uma caixa preta que ninguém mais conseguiá alterar uma linha.
O mais sensato seria fazer do modo como a empresa domina a tecnologia. Parece que o cara que fez a versão atual não sabe programa em Java.
Eu também acho que há altas chances de ser péssima programação. Um uso de um profiler no Java rapidamente identificaria um erro.
Aqui trabalhamos com Java, C e C++ e realmente não há uma diferença tão grande de performance.
Isso quando ambos os códigos estão bem programados.
Mas enfim… precisa ser C ou pode ser C++? Se for C++, existe a apostila do prof. André Bueno, de graça, sobre a linguagem. Confira essa página no meu blog para um roadmap completo sobre livros de C++, do básico ao avançado: http://vinigodoy.wordpress.com/roadmap-c
Como recente Microsoft Systems Engineer em Windows 2003 (fiz a última prova na 6a. feira, bem no fim do prazo), e como programador C e C++ de longa experiência, eu posso afirmar: o tal programa em Java foi mal-escrito.
Para substituí-lo, tente primeiramente escrever outro programa em Java; deve ter alguma mancada muito, mas muito feia, nesse programa antigo.
Um tipo de mancada muito comum é o programador Java não saber absolutamente nada de estruturas de dados - a estrutura de dados mais complexa que o cara conhece é um array e a busca mais complexa que ele conhece é a linear.
Outra coisa mais comum ainda é usar concatenação de strings com +=, em vez de usar StringBuffer.
Eu digo: um programa em Java bem-escrito costuma ser até bem mais rápido que um em C ou C++ mal-escrito. É questão de checar o que o tal programa fez de tão errado.
Podem me dizer se triggers mal feitos podem prejudicar o programa? Foi utilizado trigger para envio de email, trigger para verificação do banco e para popular o banco, enfim, trigger pra todo lado.
E só para constar, a quantidade de dados é absurda, certos arquivos chegam a pesar mais de 100mb só de texto em txt. Não sei se isso é algo relevante. Pois até meu professor falou que em C poderia se ter mais performace, só que o que aconteceu é algo inaceitável.
Eu gostaria de poder refazer o programa em java, ja que estou estudando muito isso, tanto na facudade como em cursos por fora. E tinha ficado um tanto quanto decepcionado quando me falaram do desenpenho.