GLScene 460d3d6ec8 Added resources 5 年之前
..
FRMMSnapShot.dfm 460d3d6ec8 Added resources 5 年之前
FRMMSnapShot.pas 460d3d6ec8 Added resources 5 年之前
RecyclerMM.pas 460d3d6ec8 Added resources 5 年之前
readme.txt 460d3d6ec8 Added resources 5 年之前

readme.txt

RecyclerMM Public Release 2 - 26/07/04 - Eric Grange
[email protected]

RecyclerMM is an alternative memory manager for Delphi,
to use it, add "RecyclerMM" to the uses of your project
as *first* unit.

The purpose of RecyclerMM is to provide:

- Improved performance (mileage may vary from a few percents
to several orders of magnitude, depending on application)
- highly-aligned memory blocks, suitable for SSE operation
- high resilience to memory fragmentation
- fast 'Allocated' testing (see below)
- shared memory (like ShareMem, but no special DLL required)
- no memory management data hidden before or after
the allocated blocks

The features and behaviours of the memory manager can be tweaked
via compile-time options in RecyclerMM.pas (see there for details).

Besides benchmark situations, improvements where noticed
in the following "real-world" test applications:
- XML DOM parser : about 30 to 1000% (higher figures
on larger XML files)
- OLAP Cube compiler : several orders of magnitude faster
on large datasets (default manager would fragment heavily
and use hundreds of MB)
- Entity Flow Simulator : about 20% (coming from increased
cache coherency, all allocations happen once, before the
simulation is run)
- FTP server : constant memory use under heavy multithreading
(default manager would fragment over time, use more and more
memory, enter swapping hell, etc.)

A webpage on these applications will be setup once
authorization from the parties involved is received
and time is found... especially time, volunteers welcome :)

What hasn't been tested/optimized in this version:
- out of order DLL loading/unloading
- multi-CPU performance
- platforms other than Win98/NT/XP/Win2k/Win2k3

Only downside found so far is an extra memory consumption
(when default memory manager wouldn't fragment at all),
along with a one-time hit at startup (about 1-2 MB, depending
on options), so reports of cases where performance goes
down would be welcome.

Using FRMMUsageSnapShot:

This form can provide a view of the state of the RMM (a "SnapShot"),
to use it, instantiate it or use the autocreate function, invoke
"Show", then "Display" each time you want it refreshed.
The Display function takes a structure in parameter, which is obtained
from the RecyclerMM unit via the "RMMUsageSnapShot" function.

Using "Allocated":

RecyclerMM exposes an 'Allocated' function which takes a pointer
or object, and that will return True if the memory is allocated,
False if it isn't. This test happens at high speed and does not
rely on information hidden before/after the block, and thus will
be quite robust to wild pointers or buffer overruns/underruns.

---

Any reports of use are welcome, the more applications report
improvement (or lack of), the more RecyclerMM can be improved!

Eric Grange