是否有一類不是將寫入的數據複製到偶爾調整大小的內部數組中(如MemoryStream
所做的那樣),而是保留對用戶在寫入時傳入的每個緩衝區的引用,並維護一個數據結構跟蹤寫入的每個緩衝區和偏移量/計數?它還應該支持一種讀取機制,它將爲客戶端提供緩衝區,偏移量和計數(而不是要求客戶端分配並提供一個緩衝區,以便每次讀取時都將數據複製到該緩衝區中)。在MemoryStream以外的C#中是否存在無副本緩衝區/流?
本質上我需要通過引用保留數據,並且不會在我背後做任何重要的分配或任何數據複製。出於某種原因,我懷疑BCL提供了這一點。任何已知的實現?
您是否在尋找性能改進?你需要多少改進? – 2010-09-01 00:09:28
如果您擔心要調整大小,可以使用具有容量的MemoryStream構造函數:http://msdn.microsoft.com/en-us/library/bx3c0489.aspx – SwDevMan81 2010-09-01 00:11:53
這是在服務器應用程序中 - 系統將數據從內核複製到用戶空間,然後複製到託管內存中,並希望能夠方便地在託管代碼中傳遞它,而無需將其複製到託管代碼中。 – bvanderveen 2010-09-01 00:15:57