|
Does a larger executable always mean a slower program? I have a 2mb exe and it runs fine on my 1.4Ghz machine with 512mb of ram but is almost unusable on a PII 300 with 128mb of ram. It needs to work well on older machines due to marketing issues, does pulling parts out of the main program and into DLLs increase speed?
Ed
|
|
|
|
|
No, dividing your program to more DLL's doesn't help You You will need to optimize your algorithms or data structures.
Pavel
Sonork 100.15206
|
|
|
|
|
Your CODE is only using 2mb. But your DATA is using something between 128Mb and 512 Mb: let's suppose it's using about 300Mb. So, under this supposition, you are using a total memory of 302Mb.
If you divide your program in DLLs and do a pretty good (and hard) job maybe you can reduce your code memory usage by 50%. This means that your code could be loaded in 1Mb.
This means you reduced your total memory usage from 302Mb to 301Mb, after days of optimization. Does it suffice?
Do you see where you need to optimize?
My latest articles:
Desktop Bob - Instant CP notifications
XOR tricks for RAID data protection
|
|
|
|
|
Does the task manager correctly report the total memory used by the application? If so it only reports about 8mb used for my exe. If this is true then does my speed problem point to slow code?
Ed
|
|
|
|
|
|
What it is you are trying to do that needs so much memory? Forget the exe file size, and think abou the data you are tring to process.
Try and cut it down into chuncks. Using that much memory when you don't have enough on the smaller machine probably means you need to revise the way your processing your data. If you can, only load so much in at a time, and manage the swapping so that you have the most closely linked parts of data in memory at the same time to stop page faults.
I supsect that if you look at the task manager, the Page Faults and Memory Delta will be going mad.
|
|
|
|
|
Good day,
I have a CDialog (dlg1) inside another modal CDialog (dlg2).
dlg1 contains a custom control ( registered ) based on a CEdit control.
When the custom control is in focus, and I press ESC, to dismiss dlg2, it's the parent dialog dlg1 that gets dismissed.
When I press a key, the ON_WM_KEYDOWN gets triggered, except for the escape key ,which triggers a OnCancel.
How do I send the OnCancel to the parent dialog ?
If I try with another CDialog ( dlg3 )that contains a CEdit inside dlg2, and press escape, it's the parent dialog that receives the OnCancel.
The custom control is a CWnd with a couple of CEdit inside, since I not too familiar with the internal of custom controls like this, could this be the problem ? Do I have to tweak with the window styles and/or any of the parentnotify messages?
Thanks.
Max.
|
|
|
|
|
Can anyone tell me what this error means?
BOOL CAsyncSocket::AsyncSelect(long lEvent)
{
ASSERT(m_hSocket != INVALID_SOCKET);
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
ASSERT(pState->m_hSocketWindow != NULL); <-- Errors here
return WSAAsyncSelect(m_hSocket, pState->m_hSocketWindow,
WM_SOCKET_NOTIFY, lEvent) != SOCKET_ERROR;
}
|
|
|
|
|
There can be many reasons of this error. Are you passing socket object from one thread to another ????
Imran Farooqui
World first Urdu Instant Messenger[^]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Java is a tool for creating applications that torture users with its awful speed and its ugly interfaces.
Daniel Turini commenting on this article
|
|
|
|
|
I create a UI Thread, inside that UI Thread I create a listening socket and I do all my accept, receive, close functions from with in the UI Thread etc...
I have also tried to do the listen and accept from the main thread then pass a handle to the UI Thread and let it do the Receive.. but that doesnt seem to work either..
When I close the UI Thread from the Main Thread I receive that error..
Any ideas?
|
|
|
|
|
MFC is a bitchin bitch when it's about CAsyncSocket used in multi-threaded scenarios. MFC is commonly known for losing its own state (in fact _afxSockThreadState is a #define to AfxThreadState).
I would recommend, if you can, to rely on simple sockets instead. Lotsa CP articles and implementations out there.
She's so dirty, she threw a boomerang and it wouldn't even come back.
|
|
|
|
|
I hear ya! I plan to move from CAsyncSockets to WinSock API.. hopefully all my problems will go away.
|
|
|
|
|
Does anyone knows the reason ? ALL server apps I have tested set the last error to this value (997) on startpending while working correcly. I use Windows XP Build 2600 with SP1.
#ifndef
#define __ARMEN_H__
#endif
|
|
|
|
|
997 = Overlapped I/O operation is in progress
This is not an error condition but a informational condition. Happens all the time when you are using overlapped I/O. And the system uses this quite extensive.
And if you think about... start pending - an operation is in progress - overlapped io is in progress ???
...if you're under 8 or younger. Chris Maunder, the Lounge
|
|
|
|
|
In the servicemain proc I call RegisterServiceCtrlHandler immediately and then set status to start pending with checkpoint set to 1 not 0 as MSDN says but before I create IO completion port the error is set already. Is that ok ? The error is set each time the SetServiceStatus is called. I used logging in the other apps ( samples from CodeProject, from MSDN, etc.) also - same problem.
#ifndef
#define __ARMEN_H__
#endif
|
|
|
|
|
Seems ok to me. As I said, its not an error but a informational condition. Setting SERVICE_START_PENDING might well set Window's last error to 997. Its not far off the normal windows logic
Take it as just another way to inform processes of this condition.
I keep submitting “VB” as a Priority-1 bug, but apparently no one here knows how to fix it. Nick Hodapp, Semicolon
|
|
|
|
|
Thanks a lot. Going to continue the work
#ifndef
#define __ARMEN_H__
#endif
|
|
|
|
|
I have been struggling with several things in Visual Studio .Net
when I upgraded from version 6.0
One thing I have had lots of problems with is the elimination of
support for DaoRecordsets.
I have an Access database that I want to access, and I am struggling
to do it through ODBC. However, one problem I have had that I cannot
seem to get past is trying to get the value of a primary auto number
key out of a newly added record.
With DAO there were a couple of ways to do it:
rs.SetBookmark(rs.GetLastModifiedBookmark());
updates the appropriate field in the recordset.
Or alternatively, using GetFieldValue which forced the field to
be read from the database.
CRecordset does not have a GetLastModifiedBookmark function, and
when I call GetFieldValue it throws an exception.
I've tried various other strategies, but can't seem to find anything
that works. Any help would be much appreciated.
|
|
|
|
|
|
In this:
CFileDialog fileDlg1(FALSE, ".mdb", NULL, OFN_OVERWRITEPROMPT, "Database Files(*.mdb)|*.mdb||",NULL);
the OVERWRITEPROMPT shows up with the dlg box. How do we process its return value? WHat I mean is we have IDOK and IDCANCEL for the CFileDialog itself. Additionally we have this OK or NO for the message box as well. SO it looks like we have to handle the CFileDialog return values and also the returns of the messagebox. Its not automatic that the overwrite will take place right? We have to code that part in, is that correct?
A little
Appreciate your help,
ns
|
|
|
|
|
If you say 'No' to the 'overwrite prompt' message box, your CFileDialog stays open and doesn't return from DoModal.
Tomasz Sowinski -- http://www.shooltz.com
*** Purgamentum init, exit purgamentum ***
|
|
|
|
|
you don't have to (and cna't, i think) handle the return from the overwrite prompt.
-c
Alcohol is the anesthesia by which we endure the operation of life.
-- George Bernard Shaw
|
|
|
|
|
I want to see if a file exists. GetStatus is a bool. FRom MSDN (says use the static version to check existence) its not clear to me what part of:
CFile::GetStatus( pFileName, status )
is telling me whether it exists or not. Returns true if it could get status info. So a False return value can be considered proof that the file doesnt exist?? Is that a valid assumption? If not, how do I use this static version of GetStatus to find out if the file exists?
Appreciate your help,
ns
|
|
|
|
|
That's what I'm using:
bool FileExists(const char *szFilename)
{
WIN32_FIND_DATA findFileData;
HANDLE hFind = FindFirstFile(szFilename, &findFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
VERIFY(FindClose(hFind));
return true;
}
Tomasz Sowinski -- http://www.shooltz.com
*** Purgamentum init, exit purgamentum ***
|
|
|
|
|
Can I use this in MFC? Thanks
Appreciate your help,
ns
|
|
|
|