Hôm nay tôi đã thử thực hiện một số tối ưu hóa cho câu lệnh foreach
, hoạt động trên XDocument
.Tại sao Parallel.ForEach không chạy nhiều luồng?
Trước khi tối ưu hóa:
foreach (XElement elem in xDoc.Descendants("APSEvent").ToList())
{
//some operations
}
Sau khi tối ưu hóa:
Parallel.ForEach(xDoc.Descendants("APSEvent").ToList(), elem =>
{
//same operations
});
tôi thấy rằng NET trong Parallel.ForEach(...)
mở CHỈ một thread! Kết quả là khoảng thời gian của Parallel
lớn hơn tiêu chuẩn foreach
.
Tại sao bạn nghĩ .NET chỉ mở 1 chuỗi? Bởi vì khóa tập tin? Cảm ơn
Có bao nhiêu lõi hoặc bộ vi xử lý logic trong máy của bạn? Có bao nhiêu phần tử trong danh sách? –
Tôi không thể thấy bất kỳ mối quan hệ nào của tiêu đề cho câu hỏi. –
Christian.K, tôi có máy chủ với bộ xử lý Xeon và ram 8GB (Dell PowerEdge R210) với MS Server2008 OS. Tôi nghĩ rằng, nó không phụ thuộc vào bao nhiêu yếu tố tôi có trong tài liệu XML, tôi nghĩ rằng hình phạt thời gian là do khóa tập tin. – zzfima