2 回答
TA贡献1911条经验 获得超7个赞
这是你的答案。
我编写了一个简单的代码,可以为您完成所有性能测试:
import java.util.*;
import java.io.*;
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
String response = "";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
//STEP 1
InputStream in = new ByteArrayInputStream("MYSTREAMASDasdasdSJKDFJASLKFJKSDLFJLKSADJFKSJDKAFJKSDJFLKSDJLKFJLKSDFJLKSDJLKLAKSDJLJKFSDKJADFSLJKLKJSDALJKALJKS adkaslkdajslkdjkaslkdjlaks\nasdasdasdasdasdasdasdasdasdasdasdasdasdas".getBytes());
System.out.println("FIRST OPTION");
long beginTime = System.nanoTime();
//System.out.println("begin -" + beginTime);
for (int i = 0; i < 500000; i++) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int length = 0;
while ((length = in .read(buffer)) != -1) {
baos.write(buffer, 0, length);
}
response = new String(baos.toByteArray());
}
long endTime = System.nanoTime();
System.out.println(endTime - beginTime);
//STEP 2
System.out.println("SECOND OPTION");
beginTime = System.nanoTime();
for (int i = 0; i < 500000; i++) {
response = "";
BufferedReader br = new BufferedReader(new InputStreamReader( in ));
String output;
while ((output = br.readLine()) != null) {
response = output;
}
}
endTime = System.nanoTime();
System.out.println(endTime - beginTime);
System.out.println("THIRD OPTION");
beginTime = System.nanoTime();
for (int i = 0; i < 500000; i++) {
StringBuilder sb = new StringBuilder();
for (int c;
(c = in .read()) >= 0;)
sb.append((char) c);
response = sb.toString();
}
endTime = System.nanoTime();
System.out.println(endTime - beginTime);
}
}
这里有 500K 循环执行的结果:
第一个选项 284684443 毫秒
第二个选项 1331922335 毫秒
第三个选项 16031272 毫秒
正如您将看到的,第三个选项是最快的。
这是运行示例
TA贡献2037条经验 获得超6个赞
我已经使用Jemeter - Java Request运行了我的代码,根据统计数据,1 方法显示了与其他方法相比的最佳性能。此测试使用实际的 HTTP 调用运行并将该响应转换为字符串。
方法 01 成功执行操作:完整:1.393 秒,转换:0.001秒
方法 02 成功执行操作:完整:1.502 秒,转换:0.021秒
方法 03 成功执行操作:完整:1.709 秒,转换:0.015秒
海滩标记代码在这里:- https://github.com/idthusitha/ride-test
添加回答
举报