Tôi phải triển khai thuật toán chuẩn một người tiêu dùng một nhà sản xuất. Tôi có thể thực hiện nó bằng cách sử dụng Queue
và vài câu lệnh lock
dễ dàng. Hoặc tôi chỉ có thể sử dụng ConcurrentQueue
. Điều gì là tốt hơn?hiệu suất của ConcurrentQueue vs Queue + lock
Nếu sử dụng Queue + lock
thì tôi có thể tối ưu hóa "nhiều lần thêm/truy xuất lại", vì tôi có thể lock
một lần và sau đó Add
nhiều lần.
Điều gì sẽ nhanh hơn trong trường hợp chung - ConcurrentQueue
hoặc Queue + lock
và mức chênh lệch là bao nhiêu? Tất nhiên ConcurrentQueue
là cách chuyển tiếp thẳng thắn nhất nhưng tôi không muốn mất rất nhiều hiệu suất như tôi đang sử dụng điều này trong ứng dụng giao dịch HFT.
Trước tiên, hiệu suất có liên quan đến số CPU. Rất khó để đánh giá hiệu suất của ứng dụng đa luồng trong một số chế độ trừu tượng. – user1929959
Điều gì về đo lường trong môi trường của bạn? Tôi có thể cung cấp cho bạn những con số chứng minh bất cứ điều gì bạn muốn trên máy tính của tôi. –