【发布时间】:2015-06-17 10:56:12
【问题描述】:
我的代码速度有问题。我连接到 2 个 WiFi 模块并从 status.xml 获取实时数据。不幸的是,它有 2-3 秒的延迟。我从来不需要处理代码加速问题,所以这就是我需要帮助的原因。
public static void main(String[] args) {
URL temp;
URL move;
String inputLine1 = null,inputLine2 = null;
gui.setVisible(true);
BufferedReader in1 = null, in2;
try{
temp = new URL("http://192.168.0.25/status.xml");
move = new URL("http://192.168.0.26/status.xml");
while(true) {
in1 = new BufferedReader(new InputStreamReader(temp.openStream()));
in2 = new BufferedReader(new InputStreamReader(move.openStream()));
while ((inputLine1 = in1.readLine()) != null) {
if (inputLine1.contains("<adctemp>") ) {
Temperature = inputLine1;
Temperature = Temperature.replaceFirst("<adctemp>", "").replaceAll("</adctemp>", "");
}
}
while ((inputLine2 = in2.readLine()) != null) {
if(inputLine2.contains("<led2>")) {
Motion = inputLine2;
Motion = Motion.replaceFirst("<led2>", "").replaceAll("</led2>","");
if(Motion.contains("0")) {
Movement = 0;
}
else {
Movement = 1;
}
}
}
Thread.run();
}
}catch(IOException e){
e.printStackTrace();
}
}
【问题讨论】:
-
我将首先使用 XML 解析器来解析 XML...
-
添加一些日志语句,看看时间丢失在哪里。
-
你能给我举个使用日志的例子吗?
-
@JonSkeet 使用 XML 解析器通常可能是一个好主意,但也许他只需要像此代码中所示那样进行最少的解析。我怀疑在这种情况下这是否会提高性能。
-
@traveh:它本身可能无法修复性能,但使用干净的代码开始调查性能问题会更容易:)
标签: java performance while-loop try-catch