2010-03-28 21 views
6

Tôi nghi ngờ rằng các cuộc gọi từ các luồng riêng biệt (> 15) có ảnh hưởng tiêu cực đến hiệu năng. Có cách nào tốt hơn để có được thời gian hệ thống trong các ứng dụng đồng thời không?Nút cổ chai hiệu suất trong các cuộc gọi đồng thời tới System.currentTimeInMillis()

+1

tôi sẽ không nghĩ như vậy, hầu hết các hệ điều hành hỗ trợ tốt cho các loại hình chức năng và nó là có thể được triển khai như một phương thức gốc. Tại sao bạn đổ lỗi cho phương pháp này cho vấn đề hiệu suất của bạn? –

+2

Bạn đã làm gì để mô tả rằng chức năng này là vấn đề? –

Trả lời

1

Chỉ cần một mẹo nhỏ:

tôi đọc từ các kỹ sư google và lập trình viên khác rằng nó là tốt hơn để sử dụng System.nanoTime. Ví dụ joshua bloch

Đối với thời gian khoảng thời gian, luôn luôn sử dụng System.nanoTime trong ưu tiên cho System.currentTimeMillis

+2

Không trả lời câu hỏi. Ngoài ra, ngay cả theo báo giá của bạn, System.nanoTime được ưa thích cho khoảng thời gian, không có đề cập đến những gì OP đang sử dụng thời gian hệ thống cho. Thời gian khoảng thời gian có thể không được áp dụng ở đây. –

+0

Có thể nó không trả lời trực tiếp câu hỏi, nhưng tôi nghĩ những người khác đã trả lời câu hỏi nên tôi chỉ cung cấp một mẹo mà tôi đã đọc. – Alfred

+0

http://www.techper.net/2008/08/10/systemcurrenttimemillis-systemnanotime-and-their-resolution/ timeinMillis có vấn đề với mức độ chi tiết của cửa sổ MS –

5

Nếu nó thực sự là một vấn đề, bạn có thể có một chuỗi nền lưu trữ thời gian hiện tại trong một volatile. Hoặc chỉ gọi nó ít thường xuyên hơn.

+0

+1 - chắc chắn có điều gì đó hơi kỳ lạ về một ứng dụng phải thực hiện các cuộc gọi thường xuyên đến 'System.currentTimeMillis'. –

Các vấn đề liên quan