Tôi đã tự hỏi liệu chúng ta có thể đo thời gian cần cho một yêu cầu http được hoàn thành bằng cách sử dụng node.js. Sửa đổi một chút ví dụ từ tài liệu (here), người ta có thể dễ dàng viết xuống đoạn mã sau. Thời gian đo trên các yêu cầu http node.js http
var http = require('http');
var stamp1 = new Date();
var stamp2, stamp3, stamp4;
var options = {
hostname: 'www.google.com',
port: 80,
path: '/upload',
method: 'POST'
};
var req = http.request(options, function(res) {
stamp3 = new Date();
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
res.on('end', function() {
stamp4 = new Date();
console.log ("Stamp 3: " + stamp3);
console.log ("Stamp 4: " + stamp4);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
stamp2 = new Date();
console.log ("Stamp 1: " + stamp1);
console.log ("Stamp 2: " + stamp2);
Bây giờ hãy để tôi đến quan điểm của tôi. Trên phản ứng người ta có thể dễ dàng đo thời gian cần thiết cho phản ứng, kể từ khi bắt đầu stamp3 được thiết lập và trên tem kết thúc 4 được thiết lập. Vì vậy, về nguyên tắc cho lượng dữ liệu tương đối lớn, hai dấu thời gian này sẽ khác nhau.
Tuy nhiên, câu hỏi tôi có là tem 1 và 2 thực sự đo lường những gì đang xảy ra khi yêu cầu đang được chuẩn bị và gửi đi. Nói cách khác, là req.write (....) một hoạt động đồng bộ? Dựa trên nguyên lý node.js, tôi mong đợi req.write (...) là một hoạt động không đồng bộ, nơi người ta có thể chuyển một tài liệu lớn tùy ý và sau khi hoàn thành thành công, chúng ta có thể gọi lại khi biết rằng yêu cầu đã kết thúc.
Nhận xét?
bạn có thể muốn tạo một hàm tiện ích để thực hiện các phép đo và bạn có thể nhận được một thực tế d uration bằng cách sử dụng 'Date.now()' trong khi trừ dấu thời gian thứ hai từ dấu thời gian đầu tiên. Cũng lưu ý rằng bạn có thể đo bằng nano giây với [process.hrtime] (http://nodejs.org/api/process.html#process_process_hrtime). –
Cảm ơn, tôi thích đề xuất process.hrtime vì tôi không biết về nó! Theo phép trừ, đó chính là điểm của tôi cuối cùng cho phép đo thực tế. – MightyMouse