I’m going to be a complete winner and I’ll tell you that I did something even more perfect than what you are describing ... at work. I was all scared. I have never seen anything like it. We combine VM, AWE, MMF and (soon) 32 <64 bit IPC into one large medium-sized data processing machine, addressing up to 64 GB of memory, while processing hundreds of data sets, tens of GB each.
But I can give you some tips: AWE view-swapping is rather slow because it forcibly pauses all current threads during the exchange. Therefore, choose the size of your window wisely (the smaller the faster the swap - but the overhead is lower with large sizes). We set AWE sizes equal to the default Windows page size (4 KB), but only because this choice is made in random order. Linear data access can be faster with larger sizes.
Each view can be displayed in any part of the allocated AWE memory, so one thing that can help is to map only these pages to the view that you need to access, and try to save the views in unprotected views (the priority queue comes to mind).
In addition, your design should have a registration engine that supports the relationship between the view and AWE memory. And it's better to be thread safe!
As for general use: No, this does not correspond to the usual Delphi classes. You must completely switch to another concept - and base your data structures on this.
Anyway, good luck! You will need it ...; -)
source share