Boa tarde pessoal,
to desenvolvendo um pequeno sistema para gerar um arquivo xml em um diretório e apagar um arquivo txt em outro diretório.
o problema que esta acontecendo é que na primeira vez que eu executo ele fica lento (quase um minuto para concluir), na segunda execução o programa já executa imediatamente.
alguém poderia me ajudar?
desde já agradeço!
Programa lento
6 Respostas
Em que está desenvolvido isso ? como você está serializando esse xml ? Da onde vem essa informação ? É em qual plataforma ? Quais os dados na primeira e segunda vez ?
Bom dia,
desculpa a falta de informacao…
segue:
O sistema é em java, ambiente windows, os dados gerados na primeira e segunda vez sao os mesmos porem nao to serializando, o arquivo sera enviado pela rede:
veja:
package comandas;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class CreateXml {
public void criarXml(String comanda) {
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
Document documentoXML = documentBuilder.newDocument();
Element DATAPACKET = documentoXML
.createElement("DATAPACKET");
Attr Version = documentoXML.createAttribute("Version");
Version.setValue("2.0");
DATAPACKET.setAttributeNode(Version);
documentoXML.appendChild(DATAPACKET);
Element METADATA = documentoXML.createElement("METADATA");
DATAPACKET.appendChild(METADATA);
Element FIELDS = documentoXML.createElement("FIELDS");
METADATA.appendChild(FIELDS);
int a = 1;
for (int i = 0; i < a; i++) {
Element FIELD = documentoXML.createElement("FIELD");
FIELDS.appendChild(FIELD);
Attr WIDTH = documentoXML.createAttribute("WIDTH");
WIDTH.setValue("20");
FIELD.setAttributeNode(WIDTH);
Attr fieldtype = documentoXML.createAttribute("fieldtype");
fieldtype.setValue("string");
FIELD.setAttributeNode(fieldtype);
Attr attrname = documentoXML.createAttribute("attrname");
attrname.setValue("ID_COMANDA");
FIELD.setAttributeNode(attrname);
}
Element FIELD = documentoXML.createElement("FIELD");
FIELDS.appendChild(FIELD);
Attr WIDTH = documentoXML.createAttribute("WIDTH");
WIDTH.setValue("1");
FIELD.setAttributeNode(WIDTH);
Attr fieldtype = documentoXML.createAttribute("fieldtype");
fieldtype.setValue("string");
FIELD.setAttributeNode(fieldtype);
Attr attrname = documentoXML.createAttribute("attrname");
attrname.setValue("EVENTO");
FIELD.setAttributeNode(attrname);
Element PARAMS = documentoXML.createElement("PARAMS");
METADATA.appendChild(PARAMS);
Element ROWDATA = documentoXML.createElement("ROWDATA");
DATAPACKET.appendChild(ROWDATA);
Element ROW = documentoXML.createElement("ROW");
ROWDATA.appendChild(ROW);
Attr EVENTO = documentoXML.createAttribute("EVENTO");
EVENTO.setValue("L");
Attr ID_COMANDA = documentoXML.createAttribute("ID_COMANDA");
ID_COMANDA.setValue(comanda);
Attr RowState = documentoXML.createAttribute("RowState");
RowState.setValue("4");
ROW.setAttributeNode(EVENTO);
ROW.setAttributeNode(ID_COMANDA);
ROW.setAttributeNode(RowState);
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource documentoFonte = new DOMSource(documentoXML);
StreamResult documentoFinal = new StreamResult(new File(
"D:\\" + comanda + ".xml"));
transformer.transform(documentoFonte, documentoFinal);
} catch (ParserConfigurationException ex) {
Logger.getLogger(CreateXml.class.getName()).log(Level.SEVERE, null,
ex);
} catch (TransformerConfigurationException ex) {
Logger.getLogger(CreateXml.class.getName()).log(Level.SEVERE, null,
ex);
} catch (TransformerException ex) {
Logger.getLogger(CreateXml.class.getName()).log(Level.SEVERE, null,
ex);
}
}
public void deletarComanda(String orcamento) {
String arquivo = "\\\\10.1.1.100\\Temp\\" + orcamento + ".orc";
File file = new File(arquivo);
file.delete();
}
}
obrigado pela atencao!
Comandas.jar (22.0 KB)
Segue o Executavel…
89776544.xml (326 Bytes)
arquivo gerado!!
Debugou? Avaliou o consumo de memória e processamento? Colocou logs na sua aplicação? Em que ponto (A para B) sua aplicação demora para executar (qual código)?
Boa tarde…
fabioqb,
debuguei e encontrei o erro:
public void deletarComanda(String orcamento) {
String arquivo = “\\10.1.1.100\Temp\” + orcamento + “.orc”;
File file = new File(arquivo);
file.delete();
}
creio que no primeiro momento o metodo procurava o caminho da rede pra salvar na variavel "arquivo"
o problema estava no compartilhamento, quando o metodo rodava a segunda vez ele ja tinha salvo o caminho na variavel e por isso rodava mais rapido…
agora ta resolvido…
muito obrigado pela dica!!