-2

我需要“阅读”很多 URL 略有不同的链接,以便进一步解析。使用此代码:

    String charset = "UTF-8";
    System.setProperty("java.net.useSystemProxies", "false");
    //System.out.println(http);
    //System.out.println(html);
    URL pageToRead = new URL(http);

    URLConnection yc = pageToRead.openConnection();
    yc.setRequestProperty("Accept-Charset", charset);
    BufferedReader in = new BufferedReader(new InputStreamReader(
            yc.getInputStream()));

    String inputLine;
    FileWriter fstream = new FileWriter(html);
    BufferedWriter out = new BufferedWriter(fstream);

    while ((inputLine = in.readLine()) != null) {
        out.write(inputLine);
    }


    in.close();
    out.close();

关于变量的注意事项:http是带有完整 URL 的字符串。html是带有完整文件名的字符串。

两个问题:

  1. 如何更改此代码以更快地读取 URL?
  2. 也许我错了,问题出在http服务器上。也许它只是不能更快地给我页面。如何检查?
4

2 回答 2

0

您通常在读取 html(代理等)时有较高的延迟。然而,一个体面的网络服务器可以同时处理大量请求。

为了获得更高的吞吐量,您应该同时执行多个 http 读取(使用线程池)。

根据使用的服务器,您的吞吐量将增加 10..20 倍(还取决于您的客户端操作系统是否不受连接数限制)。

于 2012-12-24T17:40:46.277 回答
0

您可以通过执行以下操作来计时您的代码并找出每个方法执行所需的时间:

long startTime = System.nanoTime();
methodToTime();
long endTime = System.nanoTime();

long duration = endTime - startTime;

然后在某处打印出来。

资料来源:如何在 Java 中计时方法的执行?

于 2012-12-24T16:42:21.263 回答