Domanda

Sto lavorando su un software che fa le query estese a un database che è ha un'interfaccia http. Così i miei programma analizza e gestisce le domande che si trovano in forma di lunga http: // indirizzi ..

Ho capito che il collo di bottiglia di tutto questo sistema è l'interrogazione e il trasferimento dei dati va appena al di sopra 20KB / s anche se sto seduto nella rete universitaria con una connessione gigabit. Recentemente un mio amico ha detto che avrei potuto scritto il mio codice in modo inefficace e che potrebbe essere la ragione per la mancanza di velocità nel processo. Quindi la mia domanda è: qual è il modo più veloce / più efficace per ottenere i dati da una fonte web in Java.

Ecco il codice che ho in questo momento:

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();
 }
È stato utile?

Soluzione

Il tuo codice sembra buono per me. Il frammento di codice non spiega la lettura lenta.

problemi possibili sono,

  1. Problemi di rete. Fare un test di rete end-end per assicurarsi rete è veloce come si pensa.
  2. problemi di server. Forse il server è troppo lento.
  3. contesa Discussione. Controllare se avete problemi di thread.

A profilatore e rete di traccia pin-point il problema.

Altri suggerimenti

Non c'è nulla nel codice che avete fornito che dovrebbe essere un collo di bottiglia. Il problema è probabilmente da qualche altra parte; per esempio. cosa si sta facendo con i personaggi dopo la lettura, come il server remoto li sta scrivendo, problemi di rete o WebProxy, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top