Cách tốt để đo thời gian thực thi mã trong VBScript là gì?Làm cách nào để đo thời gian thực thi mã trong VBScript hoặc JavaScript?
Hoặc không biết cách thực hiện trong JavaScript?
Cách tốt để đo thời gian thực thi mã trong VBScript là gì?Làm cách nào để đo thời gian thực thi mã trong VBScript hoặc JavaScript?
Hoặc không biết cách thực hiện trong JavaScript?
Đối với VBScript bạn có thể sử dụng Timer: (. Đó là một môi trường ASP)
StartTime = Timer()
EndTime = Timer()
Response.Write("Seconds to 2 decimal places: " & FormatNumber(EndTime - StartTime, 2))
Hoặc ASP Profiler
Đối với JavaScript bạn có thể sử dụng ngày:
var start = new Date().getTime()
alert("Milliseconds: " + (new Date().getTime() - start))
Firebug cũng có một profiler cho JavaScript.
Đối với JavaScript, hãy sử dụng các trình thu thập Firebug hoặc IE hoặc miễn phí DynaTrace AJAX edition profiler.
Điều này thực sự phụ thuộc vào những gì bạn đang cố gắng đo lường?
Nếu đang thử nghiệm một cái gì đó và muốn biết mảnh nào đó đi bao lâu, bạn chỉ có thể tuyên bố một sự khởi đầu và ngăn chặn biến thời gian, sau đó làm nên sự khác biệt giữa chúng ....
d = new Date();
x = 0;
for (i = 0; i < 1e7; ++i) { x += i; }
d2 = new Date();
d2 - d
12296
Sử dụng các đối tượng Date
, trả về một số valueOf()
tính bằng mili giây kể từ ngày 1 tháng 1 năm 1970. Sau đó, bạn có thể trừ thời gian để có thời gian trôi qua tính bằng mili giây.
Lưu ý: Không phải 100% chính xác http: // ejohn.org/blog/accuracy-of-javascript-time/ –
Đối với Javascript, tôi sẽ khuyên bạn nên sử dụng một hồ sơ, giống như một built-in trong Firebug:
alt text http://getfirebug.com/screenScript-profile.gif
lựa chọn thay thế khác có thể là một sự đi kèm với Google Chrome, hoặc IE8
Nếu bạn muốn thực hiện theo chương trình, bạn có thể sử dụng các đối tượng Date
để có sự khác biệt về thời gian:
var startTime = new Date();
// ...
// ...
var endTime = new Date();
var delta = endTime - startTime; // difference in milliseconds
Lưu ý: sử dụng phương pháp Ngày, mong đợi độ chính xác của thời gian tối đa là 15ms (trên Windows, ít nhất): http://ejohn.org/blog/ precision-of-javascript-time/ –
Cảm ơn Josh !, Tôi đang tìm kiếm bài viết đó! – CMS
Bạn có thể mong đợi cùng một vấn đề về độ chính xác trong một con bọ lửa giống như khi thực hiện JavaScript bình thường. Nó cũng có vấn đề về hiệu ứng người quan sát, làm chậm JavaScript của bạn vì nó chạy trong cùng một chuỗi giao diện người dùng của trình duyệt mà javascript thực hiện. – Annie
This là một bài viết tuyệt vời về thời gian JavaScript, từ cuốn sách "Ngay cả trang web nhanh hơn". Hai điều cần ghi nhớ là các đối tượng JavaScript Date thường có độ phân giải lớn tới 15ms (điều này thay đổi tùy theo trình duyệt và hệ điều hành), và hầu hết các trình profilers có một số observer effect. Lưu ý rằng Google Speed Tracer (mới kể từ khi bài viết được xuất bản) hết quá trình và thu thập dữ liệu không đồng bộ để giảm thiểu hiệu ứng của người quan sát.
Tìm thấy chức năng hoàn hảo với đúng Giờ/Phút/Giây định dạng ở đây: https://social.technet.microsoft.com/wiki/contents/articles/633.vbscript-determine-script-execution-time.aspx
Cách sử dụng:
dtmStartTime = Timer
Wscript.Echo "Hello, World!"
Wscript.Sleep 1000
Wscript.Echo "Script completed in " & GetElapsedTime
Chức năng:
Function GetElapsedTime
Const SECONDS_IN_DAY = 86400
Const SECONDS_IN_HOUR = 3600
Const SECONDS_IN_MINUTE = 60
Const SECONDS_IN_WEEK = 604800
dtmEndTime = Timer
seconds = Round(dtmEndTime - dtmStartTime, 2)
If seconds < SECONDS_IN_MINUTE Then
GetElapsedTime = seconds & " seconds "
Exit Function
End If
If seconds < SECONDS_IN_HOUR Then
minutes = seconds/SECONDS_IN_MINUTE
seconds = seconds MOD SECONDS_IN_MINUTE
GetElapsedTime = Int(minutes) & " minutes " & seconds & " seconds "
Exit Function
End If
If seconds < SECONDS_IN_DAY Then
hours = seconds/SECONDS_IN_HOUR
minutes = (seconds MOD SECONDS_IN_HOUR)/SECONDS_IN_MINUTE
seconds = (seconds MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE
GetElapsedTime = Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds "
Exit Function
End If
If seconds < SECONDS_IN_WEEK Then
days = seconds/SECONDS_IN_DAY
hours = (seconds MOD SECONDS_IN_DAY)/SECONDS_IN_HOUR
minutes = ((seconds MOD SECONDS_IN_DAY) MOD SECONDS_IN_HOUR)/SECONDS_IN_MINUTE
seconds = ((seconds MOD SECONDS_IN_DAY) MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE
GetElapsedTime = Int(days) & " days " & Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds "
Exit Function
End If
End Function
Wow đã có một loạt phản hồi tuyệt vời ở đây. Tôi nghĩ rằng phương pháp "StartTime = Timer() EndTime = Timer()" sẽ hoạt động tốt nhất cho tôi. Tôi không cần bất cứ điều gì quá phức tạp hoặc chi tiết tốt và điều này làm việc cho mục đích của tôi. Cảm ơn. –