我在Java应用程序中运行了一款分析器(即性能分析工具),惊讶地发现除了需要进行HTTP请求的方法外,耗时最长的竟然是我的 inputStreamToString
方法。该方法目前的定义如下:
public static String inputStreamToString(InputStream in) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
in.close();
return sb.toString();
}
如何使这更快?(是的,我确实需要字符串,不,输入字符串并不那么大,不,这种方法被调用的频率比程序中大多数方法要少,不,没有办法避免需要进行转换。)
BufferedReader
并提供自己的缓冲区来读入——这也可以节省readLine
调用,因为你真的不在意一次只读取一行。 - casablanca