2

我正在开发一种对具有 http 接口的数据库进行广泛查询的软件。所以我的程序解析和处理长 http:// 地址形式的查询..

我已经意识到整个系统的瓶颈是查询和数据传输几乎没有超过 20KB/s,即使我坐在大学网络中,有千兆连接。最近我的一个朋友提到我可能以一种无效的方式编写了我的代码,这可能是这个过程缺乏速度的原因。所以我的问题是从 Java 中的 Web 源获取数据的最快/最有效的方法是什么。

这是我现在拥有的代码:

private void handleQuery(String urlQuery,int qNumber, BufferedWriter out){
    BufferedReader reader;
    try{
        // IO - routines: read from the webservice and print to a log file
        reader = new BufferedReader(new InputStreamReader(openURL(urlQuery)));
        ....
        }
     }

private InputStream openURL(String urlName)
    throws IOException
 {
    URL url = new URL(urlName);
    URLConnection urlConnection = url.openConnection();
    return urlConnection.getInputStream();
 }
4

2 回答 2

2

你的代码对我来说看起来不错。代码片段没有解释慢读。

可能的问题是,

  1. 网络问题。进行端到端网络测试以确保网络与您想象的一样快。
  2. 服务器问题。也许服务器太慢了。
  3. 线程争用。检查您是否有任何线程问题。

分析器和网络跟踪将查明问题。

于 2010-07-01T12:33:13.340 回答
1

您提供的代码中没有任何内容应该成为瓶颈。问题可能出在其他地方。例如,您在阅读字符后对字符做了什么,远程服务器如何写入它们,网络或 webproxy 问题等。

于 2010-07-01T12:31:52.377 回答