Olá pessoal,
Gostaria de saber se algum de vocês chegaram a analisar a necessidade do FlushtoDisk. O motivo é que reparamos que há uma queda considerável na performance ao implementar os requisitos do Arquivo Auxiliar Criptografado(AAC). Veja a imagem como exemplo:
Para 53 chamadas concluídas de TACBrECF.VendeItem temos um tempo gasto de 34,41 segundos. Sendo que desses, 10,35 foram gastos com a recuperação do GT e 14,14 foram gastos com a atualização do AAC. Essa perda para a recuperação do GT é realmente esperada e não acho que dê pra fazer nada sobre isso. Mas a com a atualização do AAC também é considerável. Então estamos tentando otimizar o tempo gasto com esse tipo de chamada.
Analisando a chamada ACBRAAC.AtualizaValorGT, percebemos que o maior tempo, 12,84 segundos, é gasto com o método FlushToDisk. Tudo bem que 12,84 segundos não é muita coisa para 53 chamadas (dá 0,242 aproximadamente por chamada). Mas continua sendo 37% do tempo gasto com a venda de itens. E daí a questão foi levantada. Evidentemente não esperamos zerar isso, mas talvez reduzir para uns 15%?
O que poderíamos fazer?
1. Nada e aceitar esse tempo até que as impressoras possam vender o item e retornar o valorGT só com uma chamada.
2. Eliminar a FlushToDisk sem fazer nada e ficar com a possibilidade de corromper o AAC... (não acho que seja recomendado)
3. Abrir o AAC de forma que não seja necessário o FlushToDisk. (http://stackoverflow.com/a/1636308)
Não tive tempo hábil ainda de testar algumas dessas sugestões, e acredito que vocês talvez possam ter tido outras ideias.
Gostaria de ouvir opiniões.