Programa lento

6 respostas Resolvido
M

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!

6 Respostas

igomes

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 ?

M

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!

M

Comandas.jar (22.0 KB)

Segue o Executavel…

M

89776544.xml (326 Bytes)
arquivo gerado!!

fabioqb

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)?

M
Solucao aceita

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!!

Criado 15 de fevereiro de 2016
Ultima resposta 16 de fev. de 2016
Respostas 6
Participantes 3