一行小改动让代码效率有几十倍的提升

上个版本是这样的:

String charset=”utf-8”; 
javax.xml.stream.XMLStreamWriter writer = null; 
try { 
    writer = javax.xml.stream.XMLOutputFactory.newInstance().createXMLStreamWriter( 
            new FileOutputStream(fileName), charset); 
    writer.writeStartDocument(charset, "1.0"); 
    writer.writeCharacters("\n"); 
    writer.writeStartElement("RecordSet"); 
    writer.writeAttribute("version", String.valueOf(getDataXMLVerion()));  
    writer.writeCharacters("\n"); 
    for (final String[] records : rs.getRecords()) { 
        writer.writeEmptyElement("record"); 
        //用writer.writeAttribute写属性 
        ... 
        writer.writeCharacters("\n"); 
    } 
    writer.writeEndElement(); 
    writer.writeCharacters("\n"); 
    writer.writeEndDocument(); 
}

执行一次需要大概7、8分钟。今天我把初始化writer的方式改成

writer = javax.xml.stream.XMLOutputFactory.newInstance().createXMLStreamWriter(new java.io.PrintWriter(fileName,charset));

就没有问题了。几十秒就执行完了。貌似是因为,如果不是让PrintWriter 处理编码问题,而是让 XMLStreamWriter来处理,会巨慢无比。原因不明。 XMLStreamWriter 的 代码不在jdk的src.zip中。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥