|
while (...)<br />
{<br />
case 8:<br />
....<br />
case 7:<br />
....<br />
case 6:<br />
....<br />
......<br />
}
VC compile optimize:
...
00007 83 e8 01 sub eax, 1
0000a 74 16 je SHORT $LN2@TestFun1
0000c 83 e8 01 sub eax, 1
0000f 74 0b je SHORT $LN3@TestFun1
00011 83 e8 01 sub eax, 1
00014 75 1b jne SHORT $LN1@TestFun1
...
how to let vc don't optimize like that,like nether.
jmp DWORD PTR $LN17@TestFun1[esi*4]
.......
$LN17@TestFun1:
DD $LN10@TestFun1
DD $LN1@TestFun1
DD $LN2@TestFun1
DD $LN3@TestFun1
DD $LN4@TestFun1
DD $LN5@TestFun1
DD $LN6@TestFun1
DD $LN7@TestFun1
------------------------------------------------------------------
or how to write inline asm jump a address table. but in inline asm can't use DD.
Thanks.
|
|
|
|
|
Visual C++ will compile whatever it thinks is most effective dependent on the compiler options you have selected. I typically select /Oxs (Minimize Size) as it tends to produce a smaller binary. In many circumstances this will actually run faster as more code fits into the processor's caches and less paging typically happens. Second-guessing the compiler often leads to worse performance.
It's important to be aware of the differences is both bandwidth and latency between different types of memory in a modern computer system, when evaluating different choices in optimization. See Herb Sutter's Machine Architecture[^] presentation for the Northwest C++ User's Group.
These kinds of micro-optimizations are for times when you've already eliminated any possible gains you can get from improving your use of data structures and algorithms, and already made your data structures as cache-efficient as you can, so your program isn't stalling due to CPU wait-states. Generally you'll find more improvement by improving one of those areas instead.
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
Hi All,,
I want to create one process which to run an .EXE so I tried to write follwing code ....
<br />
STARTUPINFO si;<br />
PROCESS_INFORMATION pi;<br />
<br />
ZeroMemory(&si,sizeof(si));<br />
si.cb = sizeof(si);<br />
ZeroMemory(&pi,sizeof(pi));<br />
<br />
if(!CreateProcess(LPWSTR("E:\\Testing_and_Download\\Testing\\DLL\\TestProcess\\CaptureChange.exe"),NULL,<br />
NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))<br />
{<br />
AfxMessageBox(CString("CreateProcess Failed"));<br />
}<br />
else<br />
{<br />
AfxMessageBox(CString("Process Created"));<br />
}<br />
<br />
WaitForSingleObject(pi.hProcess,INFINITE);<br />
<br />
CloseHandle(pi.hProcess);<br />
CloseHandle(pi.hThread);<br />
But Here every time process is not created and shows "CreateProcess Failed" Message.
So can you help where am I doing minstake??
|
|
|
|
|
ashishbhatt wrote: if(!CreateProcess(LPWSTR("E:\\Testing_and_Download\\Testing\\DLL\\TestProcess\\CaptureChange.exe"),NULL,
NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))
This not the mothod for creating LPWSTR. Change it as follows..
if(!CreateProcess( _T ("E:\\Testing_and_Download\\Testing\\DLL\\TestProcess\\CaptureChange.exe"),NULL,
NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi))
_T macrop converts a string to LPWSTR if unicode is defined. other wise it will covert the string to LPSTR.
|
|
|
|
|
Thank you v much.
I got the solution.
|
|
|
|
|
Hi all,
I've create a Rich Edit Control using windows API and add some data as follows. Then get the text only from the rtf text which is sends to the rich edit control window.
::SetWindowText(m_hwnd_RTFBox, rtf.c_str());
int recCount = GetWindowText(m_hwnd_RTFBox, pBuffer, 1024);
if(recCount > 0)
{
string strPlr(pBuffer, 1024);
printf("%s", strPlr.c_str());
}
Now I want to count the number of words on the rich edit control window. Do you know a better way. On windows API i can't see any simple class member to use this.
Any idea.
I appreciate your help all the time...
Eranga
|
|
|
|
|
If I can find the word breaks of the string on the rich edit control until the end of it, i can found the number of words.
I appreciate your help all the time...
Eranga
|
|
|
|
|
Have you tried to count the number of "blank spaces"? That number + 1 should be the number of words.
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
|
|
|
|
|
Hi! I'm Rathakrishnan. I've a project developed in VC++. It was compiled and run very well. Once I rebuilt the the solution, it showed me an error
which said "Error Spawning rc.exe". I didn't do any thing(not changed any code or didn't even open the resource file at all). How do I resolve this error?
|
|
|
|
|
|
try the following.
in msdev take tools->options->directories.
in the "show directories" combobox, select executable files. Now in the below list box, add the path of folder where CL.exe exisits( usually in the "C:\Program Files\Microsoft Visual Studio\VC98\BIN" ). Click ok and compile again
|
|
|
|
|
I've included "C:\Program Files\Microsoft Visual Studio\VC98\BIN" in the executable files. Now also the same problem persists. What to do?
|
|
|
|
|
does the cl.exe exits in the "C:\Program Files\Microsoft Visual Studio\VC98\BIN" folder?
|
|
|
|
|
Yes. CL.exe exists in the "C:\Program Files\Microsoft Visual Studio\VC98\BIN" folder. I searched and added the path. Any alternatives?
|
|
|
|
|
sorry. I though it was cl.exe The rc.exe exists in the folder
"C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin". add that folder too
|
|
|
|
|
I could not find the file rc.exe. In case Visual Studio .NET 2003, where the file exists usually?
|
|
|
|
|
T.RATHA KRISHNAN wrote: In case Visual Studio .NET 2003, where the file exists usually?
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin
|
|
|
|
|
Hi! Only a dll file called rcdll.dll is present in both the locations. Shall I add this dll file? If yes, where should I add?(whether in the source files or Include files).
|
|
|
|
|
T.RATHA KRISHNAN wrote: Hi! Only a dll file called rcdll.dll is present in both the locations
ho ho... . So that file some how might have got deleted. Better reinstall vs or copy those files from some other machine.
|
|
|
|
|
The following code gives me the error:'IWebBrowser2' : illegal use of this type as an expression but if I comment out the first line //TRACE("DocumentComplete"); then there is no error. I am lost I don't know why this is happening.
void DocumentComplete(IDispatch *pDisp, VARIANT *URL)
{
TRACE("DocumentComplete");
IWebBrowser2* wb = 0;
}
I am using win32 application.
Any idea will be helpful.
Thank you.
|
|
|
|
|
What is the definition of TRACE ?
Perhaps this will help (guess):
TRACE(_T("DocumentComplete");
Steve
|
|
|
|
|
I use vs2005,
In the afxdlgs.h file, I can see the declaration of CFontDialog constructor's code, but i can't find the implementation code,
Does anybody know where to find the code?
Or microsoft didn't offer the code at all?
|
|
|
|
|
the implementation of the CFont can be found in the file. "Microsoft Visual Studio 8\VC\atlmfc\src\mfc\dlgfnt.cpp".
You can find the source code by user self using the follwoing technique. Suppose you have written code like
CFontDialog Dlg;
put a break point in this line and when the break point hits while running, press F11( step in ) so that the controls go to the constructor of the CFontDialog.
|
|
|
|
|
Hi all,
I'm wondering is there an API that could be used to test for whether a thread has ended(signaled in other words). WaitForSingleObject is blocking wait for the thread to signaled, but I want nonblocking wait.
Thanks,
|
|
|
|
|
reading the documentation on WaitForSingleObject would not be a waste of time.
|
|
|
|