如何解决与JavaScript相比,Java Http GET请求的速度异常慢吗?
当我发现Java实现的性能始终比JavaScript(node.js)应用差很多时,我正在用Java和JavaScript测试一些Http GET请求。我的2个简单实现如下:
Java:
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
long startTime = System.nanoTime();
sendGetRequest();
long endTime = System.nanoTime();
long duration = (endTime - startTime)/1000000;
System.out.println(duration + "ms");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void sendGetRequest() throws IOException {
URL url = new URL("https://www.supremenewyork.com/mobile_stock.json");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent","Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML,like Gecko) CriOS/80.0.3987.95 Mobile/15E148 Safari/604.1");
con.setRequestProperty("Connection","close");
con.setUseCaches(false);
int responseCode = con.getResponseCode();
con.disconnect();
System.out.println(responseCode);
}
}
注意我什至没有得到json,我只是得到了响应代码。该请求平均需要2800毫秒。 (您可以在我的主要方法中看到如何计算持续时间)
现在这是我的node.js代码,平均需要花费75毫秒来读取json数据:
const fetch = require('node-fetch');
console.time('p1')
fetch('https://localhost:8000/test.json',{
method: 'GET',headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML,like Gecko) CriOS/80.0.3987.95 Mobile/15E148 Safari/604.1','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip,deflate,br','DNT': 1,'Connection': 'close','Pragma': 'no-cache','Cache-Control': 'no-cache','TE': 'Trailers'
},body: null
}).then(res => res.json()).then(json => console.log(json))
console.timeEnd('p1')
同样,您可以看到我如何计算经过的时间。我的老师曾经告诉我Java应该比JavaScript快几个数量级,结果令我感到惊讶。这仅仅是JS / node.js的优势之一吗?还是我在Java实现中做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。