- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I made simplest test with Intel 10.0.025 C++ compiler.
And I got VEEEERY bad results in comparison with current VC++ 8 on my Q6600:
1. Non-virtual member function: VC8 - 7980ms, ICC10 - 25750ms
2. Virtual member function: VC8 - 23820ms,ICC10 - 24150
3. Static function: VC8 - 7250ms, ICC - 22140ms
Could you fix this SMALL issue ?
Here is program, you have to increase stack (I used 20000000) and link with winmm.lib:
//--------------------------------------------------------------------
#include "stdafx.h"
#include
#include
#include
#include
class Test {
public:
// Ackermann function
int Ack(int M, int N) {
return(M ? (Ack(M-1,N ? Ack(M,(N-1)) : 1)) : N+1);
}
virtual int Ackv(int M, int N) {
return(M ? (Ackv(M-1,N ? Ackv(M,(N-1)) : 1)) : N+1);
}
};
static int Acks(int M, int N) {
return(M ? (Acks(M-1,N ? Acks(M,(N-1)) : 1)) : N+1);
}
int s_iresult;
int _tmain(int argc, _TCHAR* argv[]) {
DWORD stime = 0,etime = 0;
int cnt;
{
Test me;
cnt = 13;
stime = timeGetTime();
s_iresult = me.Ack(3,cnt);
printf("Ackermann: %d = %u ms %d ",cnt,timeGetTime()-stime,s_iresult);
}
{
Test me;
cnt = 13;
stime = timeGetTime();
s_iresult = me.Ackv(3,cnt);
printf("Ackermann virtual: %d = %u ms %d ",cnt,timeGetTime()-stime,s_iresult);
}
{
cnt = 13;
stime = timeGetTime();
s_iresult = Acks(3,cnt);
printf("Ackermann static: %d = %u ms %d ",cnt,timeGetTime()-stime,s_iresult);
}
char c = getchar();
return 0;
}
//--------------------------------------------------------------------
And I got VEEEERY bad results in comparison with current VC++ 8 on my Q6600:
1. Non-virtual member function: VC8 - 7980ms, ICC10 - 25750ms
2. Virtual member function: VC8 - 23820ms,ICC10 - 24150
3. Static function: VC8 - 7250ms, ICC - 22140ms
Could you fix this SMALL issue ?
Here is program, you have to increase stack (I used 20000000) and link with winmm.lib:
//--------------------------------------------------------------------
#include "stdafx.h"
#include
#include
#include
#include
class Test {
public:
// Ackermann function
int Ack(int M, int N) {
return(M ? (Ack(M-1,N ? Ack(M,(N-1)) : 1)) : N+1);
}
virtual int Ackv(int M, int N) {
return(M ? (Ackv(M-1,N ? Ackv(M,(N-1)) : 1)) : N+1);
}
};
static int Acks(int M, int N) {
return(M ? (Acks(M-1,N ? Acks(M,(N-1)) : 1)) : N+1);
}
int s_iresult;
int _tmain(int argc, _TCHAR* argv[]) {
DWORD stime = 0,etime = 0;
int cnt;
{
Test me;
cnt = 13;
stime = timeGetTime();
s_iresult = me.Ack(3,cnt);
printf("Ackermann: %d = %u ms %d ",cnt,timeGetTime()-stime,s_iresult);
}
{
Test me;
cnt = 13;
stime = timeGetTime();
s_iresult = me.Ackv(3,cnt);
printf("Ackermann virtual: %d = %u ms %d ",cnt,timeGetTime()-stime,s_iresult);
}
{
cnt = 13;
stime = timeGetTime();
s_iresult = Acks(3,cnt);
printf("Ackermann static: %d = %u ms %d ",cnt,timeGetTime()-stime,s_iresult);
}
char c = getchar();
return 0;
}
//--------------------------------------------------------------------
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well, it looks like a performance issue on our part. I've analyzed it and developers are working on a fix. I'll post here when the fix is released.
Thanks for pointing out the problem!
Dale
Thanks for pointing out the problem!
Dale
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page