|
YoU ArE MoSt WeLcOmE.
Nice talking to you.
If you judge people, you have no time to love them. -- Mother Teresa
|
|
|
|
|
G Haranadh wrote: ++i is faster than i++.
Could you explain why? It might be a 100th of a ms faster, but other than that, I don't see why ++i would be significantly faster than i++.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
There's no advantage for integers like i. But if you're using an STL iterator, for example, there's a definite advantage using ++i over i++. The implementation of the postincrement operator would need to do whatever ++i does, but it would also need to store the original value in a temporary variable and return it, which would be less performant.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
Thanks for posting this question... I always use i++ but did not know it could be slower.
John
|
|
|
|
|
|
Recently I have started using ++i over i++.
But you must be careful with assignments.
For eg:
int j = ++i or i++;
You must be fully aware of what you are doing.
I use ++i in loops. There is a slight advantage.
i++ returns the value and then increments ie
j = i;
i = i+1;
++i simply increments ie
j = (i=i + 1);
Jesus Loves You and Me <marquee direction="up" height="50" scrolldelay="1" step="1" scrollamount="1" style="background-color:'#44ccff'">
--Owner Drawn
--Nothing special
--Defeat is temporary but surrender is permanent
--Never say quits
--Jesus is Lord
|
|
|
|
|
I dont know about integeres
but for objects it sure that the
performance is better in ++i.
U can find the reason at this link
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/overl_12.asp
I did a small experiment with integers
considering the loop , to test the speed
but it is almost same , for bot type of
increments
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
I was also using i++. Recently changed to ++i...
Thank you.
- NS -
|
|
|
|
|
I'd reiterate the earlier comment that you should BE VERY CAREFUL mixing ++i and i++. It's very easy to skip index 0 in situations where you pre-increment.. only to cause bugs that are sometimes subtle -- especially when dealing with interating through arrays of data.
Read more of what I have to say at http://directx9.blogspot.com/
|
|
|
|
|
|
from the VC assembly dump.
10: for(i=0;i<5; i++)
00401028 mov dword ptr [ebp-4],0
0040102F jmp main+2Ah (0040103a)
00401031 mov eax,dword ptr [ebp-4]
00401034 add eax,1
00401037 mov dword ptr [ebp-4],eax
0040103A cmp dword ptr [ebp-4],5
0040103E jge main+3Fh (0040104f)
11: printf("Hello World!\n");
00401040 push offset string "Hello World!\n" (0042001c)
00401045 call printf (004010b0)
0040104A add esp,4
0040104D jmp main+21h (00401031)
12:
13: for(i=0;i<5; ++i)
0040104F mov dword ptr [ebp-4],0
00401056 jmp main+51h (00401061)
00401058 mov ecx,dword ptr [ebp-4]
0040105B add ecx,1
0040105E mov dword ptr [ebp-4],ecx
00401061 cmp dword ptr [ebp-4],5
00401065 jge main+66h (00401076)
14: printf("Hello World!\n");
00401067 push offset string "Hello World!\n" (0042001c)
0040106C call printf (004010b0)
00401071 add esp,4
00401074 jmp main+48h (00401058)
so clearly the code for both cases is the same.
so no difference if you use the incrementor statements (pre or post) that are independent.
<hr<span style="color:gray;size:15px;">-Prakash
-Prakash
|
|
|
|
|
Its amazing...
I thought that post increment will cause a temporary instance for keeping the value, and then it will increment.
Thank you for revealing a great mistake.
- NS -
|
|
|
|
|
As far as i know it will not effect the
integer type but
if u are using an c++ object during the
increment it will effect preformance
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
Now i foudnd something that can prove
++i is better then i++.
this is in the case ur passing a argument
to a function in my case the fun name is
add. So ++i i better as it donot create any
temp variable to store . As the value is
need to be incremented first . But in the
late case the value have to be incremented
afterwards so a temp variable is needed..
Assmebly code to prove my words
U r wrong the case is vice versa
Tough to Belive
Assembly code to prove my observations
<br />
507: Add(++i);<br />
004010CE mov eax,dword ptr [ebp-4]<br />
004010D1 add eax,1<br />
004010D4 mov dword ptr [ebp-4],eax<br />
004010D7 mov ecx,dword ptr [ebp-4]<br />
004010DA push ecx<br />
004010DB call @ILT+15(Add) (00401014)<br />
004010E0 add esp,4<br />
508: Add(i+1);<br />
004010E3 mov edx,dword ptr [ebp-4]<br />
004010E6 add edx,1<br />
004010E9 push edx<br />
004010EA call @ILT+15(Add) (00401014)<br />
004010EF add esp,4<br />
506: Add(1+i);<br />
004010CE mov eax,dword ptr [ebp-4]<br />
004010D1 add eax,1<br />
004010D4 push eax<br />
004010D5 call @ILT+15(Add) (00401014)<br />
004010DA add esp,4<br />
507: Add(i++);<br />
004010DD mov ecx,dword ptr [ebp-4]<br />
004010E0 mov dword ptr [ebp-5Ch],ecx<br />
004010E3 mov edx,dword ptr [ebp-5Ch]<br />
004010E6 push edx<br />
004010E7 mov eax,dword ptr [ebp-4]<br />
004010EA add eax,1<br />
004010ED mov dword ptr [ebp-4],eax<br />
004010F0 call @ILT+15(Add) (00401014)<br />
004010F5 add esp,4
I dont know but how i+1 is more effecient to
pass then i++ or ++i
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
Can anyone please giv me the simple code for building modeless dialog box in win 32 application.
Thanks and regards,
pooja
|
|
|
|
|
A good but simple example from Nishant Sivakumar...
http://www.codeproject.com/dialog/gettingmodeless.asp[^]
Apart from this a small example is given here...
CDialog dialog;
dialog.Create(IDD_YOUR_DIALOG_TEMPLATE, this);
dialog.ShowWindow(SW_SHOW);
Jesus Loves You and Me <marquee direction="up" height="50" scrolldelay="1" step="1" scrollamount="1" style="background-color:'#44ccff'">
--Owner Drawn
--Nothing special
--Defeat is temporary but surrender is permanent
--Never say quits
--Jesus is Lord
|
|
|
|
|
use DialogBox api in win32 or create a dummy win32 application and see how the about dialog box is launched.
<hr<span style="color:gray;size:15px;">-Prakash
-Prakash
|
|
|
|
|
How can I know if there is a Floppy disk in the Floppy drive?
Jesus Loves You and Me <marquee direction="up" height="50" scrolldelay="1" step="1" scrollamount="1" style="background-color:'#44ccff'">
--Owner Drawn
--Nothing special
--Defeat is temporary but surrender is permanent
--Never say quits
--Jesus is Lord
|
|
|
|
|
|
He he, At last...
Thanks, Buddy...
God Bless You.
Jesus Loves You and Me <marquee direction="up" height="50" scrolldelay="1" step="1" scrollamount="1" style="background-color:'#44ccff'">
--Owner Drawn
--Nothing special
--Defeat is temporary but surrender is permanent
--Never say quits
--Jesus is Lord
|
|
|
|
|
But there is nothing about floppy drive...
Jesus Loves You and Me <marquee direction="up" height="50" scrolldelay="1" step="1" scrollamount="1" style="background-color:'#44ccff'">
--Owner Drawn
--Nothing special
--Defeat is temporary but surrender is permanent
--Never say quits
--Jesus is Lord
|
|
|
|
|
Do you already know the drive letter of the floppy drive?
If so, then try GetVolumeInformation
And heed this warning:
When a user attempts to get information about a floppy drive that does not have a floppy disk, or a CD-ROM drive that does not have a compact disc, the system displays a message box for the user to insert a floppy disk or a compact disc, respectively. To prevent the system from displaying this message box, call the SetErrorMode function with SEM_FAILCRITICALERRORS.
Marriage slows down your coding, a baby slows it down even more!
|
|
|
|
|
What is the difference between using __try/__except and try/catch? Can one be used in place of the other, anytime? Are there cases that are handled better by only one of them?
thanks!
|
|
|
|
|
AFAIK, try/catch is the Standard C++ way of exception handling. It's guaranteed to work in all platforms. __try/__except is a Windows specific extension for Structured Exception Handling (SEH). It is typically used to catch problems like access violation, stack overflow etc. which are outside the bounds of standard C++.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
In Microsoft C++,
identifiers with two leading underscores are reserved for compiler implementations. Therefore, the Microsoft convention is to precede Microsoft-specific keywords with double underscores. These words cannot be used as identifier names.
for ur code to be portable ensuur that u replace
the microsoft specific keywords
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|