昨天写了这样一段处理xml的代码,处理系统返回的结果,最后居然导致系统死慢死慢的,我百思不得其解,到底是Document类处理的问题呢?还是数据过多?
private void formatResults(Condition condition) {
NodeList results = doc.getElementsByTagName("result");
try {
for (int i = 0; i < results.getLength(); i++) {
expr = xpath.compile("child::binding[@name='"
+ condition.patternPara + "']");
Node node = results.item(i);
Node e1 = (Node) expr.evaluate(node, XPathConstants.NODE);
node.removeChild(e1);
}
} catch (XPathExpressionException e) {
e.printStackTrace();
}
}
就这样一段简单的代码~
最后终于。。请教了同事,一眼看出了问题
expr = xpath.compile("child::binding[@name='"
+ condition.patternPara + "']");
这一句是速度低的关键!!!!!
原来是每进入循环一次,就执行一次xpath的编译,这样如何能不慢!!!
将其移除到循环外后,速度上去多了~
我想,在我的代码中很可能还存在着很多类似的问题,每天不停的写代码,马不停蹄的赶工。学生时代赶作业稀里糊涂完成功能的习惯没有改掉。敲代码的时候,更多的是一种习惯和经验,这个应该这样写,应该那样写。作为一个程序员,应该严谨一些,这种低级错误必须杜绝。以后写循环的时候,一定要三思,记得循环的次数是不可控的,你写一句它就有可能执行N次!
一定要养成良好的编程习惯,完成任务之余多斟酌一下自己的代码!
分享到:
相关推荐
如何学python(李三思)
上海新三思拉力机软件powertest3.3注册码计算程序,没有用过后续版本,不知道新版本是否适用。
2012.9.Oracle三思笔记合集,供大家下载学习。压缩包里共32个PDF或DOC文件,都是整理版的,非常好阅读,谁下谁知道。 [三思笔记]drbd入门与应用.pdf [三思笔记]Linux5版本安装Oracle11gR2.pdf [三思笔记]Linux平台...
三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版
rman(三思笔记)
三思oracle笔记包 包含: Linux5版本安装Oracle11gR2 ORACLE 10gR2 RAC环境增加及删除节点 Oracle+RAC数据库配置DataGuard RMAN管理ORACLE_RAC数据库的备份与恢复 全面学习MySQL+Proxy特性 全面学习分区表及分区索引...
三思笔记\[三思笔记]全面学习MySQL Proxy特性.pdf
mysql书籍,涂抹mysql三思笔记
[三思笔记]一步一步学DataGuard.pdf
三思Oracle_RMAN数据备份恢复详细教程
大名鼎鼎的君三思,学过Oracle的童鞋应该都听过说此人,本篇是他的hadoop安装文档,三思的风格你懂得!
思笔记\[三思笔记]全面学习和应用ORACLE ASM特性.pdf
思笔记\[三思笔记]Linux平台Oracle10gR2 RAC数据库安装补丁集.思笔记
涂抹Oracle 三思笔记之一步一步学Oracle(第2部分)
高清 涂抹MySQL 跟着三思一步一步学MySQL
《涂抹Oracle—三思笔记之一步一步学Oracle》很好的学习oracle书籍,值得一看
三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思笔记Rman。三思...
君三思-动态性能表(1-20).pdf
DBA日记(第一部),oracle函数介绍(1) 著名函数之单值函数,oracle函数介绍(2) 非著名函数之单值函数,oracle函数介绍(6) 著名函数之分析函数等
深度学习:以学生为中心的“三思”课堂——以《登泰山记》为例展开“三思”课堂的实践.pdf