Một trong những lá cờ bạn có thể vượt qua để CoInitializeEx là COINIT_SPEED_OVER_MEMORY, mà là tài liệu như: https://msdn.microsoft.com/en-us/library/ms678505(v=VS.85).aspx
COINIT_SPEED_OVER_MEMORY: nhớ thương cho tốc độ. Tài liệu này đã mơ hồ vì nó không nói hướng thương mại đang được thực hiện. Bạn đang giảm bộ nhớ để tăng tốc độ, hoặc tăng bộ nhớ bằng cách giảm tốc độ? Trên thực tế nó không phải là: Nếu bạn vượt qua lá cờ này, sau đó bạn đang hướng dẫn COM để tiêu thụ nhiều bộ nhớ hơn trong một nỗ lực để giảm sử dụng CPU, theo giả định rằng bạn chạy nhanh hơn bằng cách thực hiện ít chu kỳ.¹
Yêu cầu là một quá trình chuyển đổi một chiều. Khi ai đó ở bất kỳ nơi nào trong quá trình đặt COM vào chế độ tốc độ bộ nhớ, cờ vẫn được đặt và vẫn được đặt cho đến khi quá trình thoát.
Khi nào bạn nên bật chế độ này? Nó không quan trọng, bởi vì như xa như tôi có thể nói, không có mã bất cứ nơi nào trong COM thay đổi hành vi của nó dựa trên việc quá trình đã được đặt vào chế độ này! Có vẻ như lá cờ đã được thêm vào khi DCOM được giới thiệu, nhưng nó không bao giờ được nối với bất cứ thứ gì. (Hoặc bất kỳ mã nào đã được nối với nó không bao giờ được vận chuyển.Như bạn đã biết, tiêu thụ nhiều bộ nhớ hơn không đảm bảo rằng bạn sẽ thực sự chạy nhanh hơn, vì việc sử dụng bộ nhớ cao hơn làm tăng cơ hội mà bạn cần sẽ bị mất bộ nhớ cache L1 hoặc lỗi trang. trong thời gian chờ đợi (mặc dù không sử dụng CPU).
Nguồn
2015-07-08 07:17:59
Bất kỳ tham chiếu nào về điều đó? –
http://msdn.microsoft.com/en-us/library/ms678505(VS.85).aspx – paxdiablo