Comments (2)
BufferManager is not the best option, even it's namespace suggests it is intended for particular purpose.
There is shared memory pool optimized for thread local and detecting memory pressure, but it could return size larger than requested, that breaks RMS in the current design and requires a check for length. If the goal is to reduce overall app memory usage and share pools then using the shared pool with the check should be OK, or RMS should be redesigned to use ArraySegments
/Memory
etc.
There is also a ConfigurableArrayPool but the relevant variable to get exact size MaxBucketsToTry
is not configurable. It should be set to zero and !=
condition in the while loop replaced with <=
.
RMS could just extract bucket implementation from ConfigurableArrayPool
, it is c.3X faster than ConcurrentStack
that is used now. Replacing SpinLock
with hand-crafted lock makes it even faster and is appropriate for this case where the work being done inside the lock is literally a couple of instructions.
from microsoft.io.recyclablememorystream.
@buybackoff , thank you for detailed investigation.
RMS should be redesigned to use ArraySegments/Memory etc.
I think this is the best option, because we will re-use common solution (which is optimized for now and will be optimized in future).
And I fully agree with "BufferManager is not the best option" according to your arguments
from microsoft.io.recyclablememorystream.
Related Issues (20)
- Question about how to use Recyclable memory stream manager HOT 6
- RMS v3.0 Planning HOT 3
- NullReferenceException possible with M.IO.RecyclableMemoryStream.Dispose(true) HOT 1
- Using memory stream with httpClient post HOT 3
- Is there a plan to contribute to the dotnet/runtime? HOT 4
- FeatureRequest: Add opt-in possibility to zeroed-out buffers HOT 10
- Continous benchmarking HOT 1
- Multiple StreamManagers in referenced libraries - how to find total memory usage HOT 1
- Large pool limit should apply to whole pool, not each slot HOT 1
- Humanitarian Organization Team mbrgi
- ResponseTime is almost doubled with RecyclableMemoryStream. HOT 5
- Question: GetStream copy existing buffer use case HOT 1
- How effective is this package for buffers that are usually smaller than 256 bytes? HOT 1
- Consider using ArrayPool<byte> as underlying storage mechanism HOT 4
- Breaking changes at 3.0.0 version break OfficeOpenXml NuGet package HOT 11
- Guideline about cryptography with RMS HOT 5
- Unclear Documentation for MaximumFreeSmallPoolBytes
- Upgrade blocker: Recent change of GetStream() to return RecyclableMemoryStream instead of MemoryStream HOT 1
- why just pool MemoryStream HOT 2
- FileStreamResult: ObjectDisposedException: Cannot access a disposed object. HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from microsoft.io.recyclablememorystream.