Prev: GetProgAddress for GetNativeSytemInfo not available in Constructor.
Next: MoveFile and ACL changes
From: JmWro on 27 Feb 2010 13:28 Hi All, I'm writing small 32bit application. Not managed C++, Qt used for GUI, STL used for data storage, some advanced single thread data processing, millions of small objects. I can't go for 64bit because most of users have 32bit win XP and this can not be changed. Unfortunately I have a problem with 2GB (per process) virtual memory limit. Some advanced users use the application to create huge models and the tool reaches it's limits. In fact it would need up to 8GB in worst cases. Now I must find a solution for that. I have two ideas so far. 1. Create separate processes for data storage, do some inter-process communication and let windows take care of caching them to page file. 2. Create custom cache file on my own. Second solution would be easier for me but is it possible to outperform system page file ? Any other advice ? BR, JM
From: ScottMcP [MVP] on 27 Feb 2010 14:10 On Feb 27, 1:28 pm, "JmWro" <b...(a)adresu.i.juz> wrote: > Hi All, > > I'm writing small 32bit application. Not managed C++, Qt used for GUI, STL > used for data storage, some advanced single thread data processing, millions > of small objects. > I can't go for 64bit because most of users have 32bit win XP and this can > not be changed. > Unfortunately I have a problem with 2GB (per process) virtual memory limit. > Some advanced users use the application to create huge models and the tool > reaches it's limits. In fact it would need up to 8GB in worst cases. > Now I must find a solution for that. I have two ideas so far. > 1. Create separate processes for data storage, do some inter-process > communication and let windows take care of caching them to page file. > 2. Create custom cache file on my own. > Second solution would be easier for me but is it possible to outperform > system page file ? Any other advice ? > > BR, > JM If you use a memory mapped file for your "custom cache" file you will be using the exact same mechanism that Windows uses for page file swaps. (MapViewOfFile and CreateFileMapping). I would expect that your own custom cache would outperform because you would reduce switching between multiple processes.
From: Nobody on 28 Feb 2010 13:30 "JmWro" <brak(a)adresu.i.juz> wrote in message news:hmbo96$l7s$1(a)news.onet.pl... > Hi All, > > I'm writing small 32bit application. Not managed C++, Qt used for GUI, STL > used for data storage, some advanced single thread data processing, > millions of small objects. > I can't go for 64bit because most of users have 32bit win XP and this can > not be changed. > Unfortunately I have a problem with 2GB (per process) virtual memory > limit. Some advanced users use the application to create huge models and > the tool reaches it's limits. In fact it would need up to 8GB in worst > cases. > Now I must find a solution for that. I have two ideas so far. > 1. Create separate processes for data storage, do some inter-process > communication and let windows take care of caching them to page file. > 2. Create custom cache file on my own. > Second solution would be easier for me but is it possible to outperform > system page file ? Any other advice ? You could get 3GB by editing the binary or use a 3GB switch. Another option is it to make a 64-Bit COM DLL and use it out-of-process from your app. It will be hosted using dllhost.exe, and the DLL could take advantage of the 64-Bit address space. I already did this to one of my applications using VC 2003, which doesn't have a 64-Bit compiler of its own. A free 64-Bit compiler is included with the Platform SDK, and you can use it with the VC Express edition, which doesn't normally include a 64-Bit compiler. Obviously you can only load this DLL in a 64-Bit OS. How to: Use Visual C++ Express Edition with the Microsoft Platform SDK(32 Bit only) http://msdn.microsoft.com/en-us/library/ms235626(VS.80).aspx Visual C++ Express 64-bit issues http://social.msdn.microsoft.com/Forums/en/Vsexpressvc/thread/49681aee-ece9-4a1e-aa33-2e04aa053db3
From: David Schwartz on 28 Feb 2010 16:59 On Feb 27, 10:28 am, "JmWro" <b...(a)adresu.i.juz> wrote: > 2. Create custom cache file on my own. > Second solution would be easier for me but is it possible to outperform > system page file ? Any other advice ? You're asking if apples would outperform oranges. Your custom cache would control which pages of your cache file are mapped into your limited address space. This is not at all like what the system paging does because it actually moves data and you only move metadata. Use a cache file and map and unmap pages as intelligently as you can. DS
From: Tim Roberts on 28 Feb 2010 20:49 "Nobody" <nobody(a)nobody.com> wrote: > >...Another option >is it to make a 64-Bit COM DLL and use it out-of-process from your app. It >will be hosted using dllhost.exe, and the DLL could take advantage of the >64-Bit address space. Perhaps you did not read the requirement that the solution must run on XP 32. -- Tim Roberts, timr(a)probo.com Providenza & Boekelheide, Inc.
|
Next
|
Last
Pages: 1 2 Prev: GetProgAddress for GetNativeSytemInfo not available in Constructor. Next: MoveFile and ACL changes |