I ran the following (same) 2 small programs in C#.NET and then in C (Bloodshed Dev C/C++). The latter took more time than the former (4.7s vs 3.8s) - I thought this was counter-intuitive, and that a code written in C should run faster... Any Ideas?
C#:
---
public static void Main()
{
// variables
int i, i1=0;
int[] ar=new int[1000];
long l1, l2;
// first for loop - 1Billion iterations
for (i=0;i<1000000000;i++)
{
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
l1=DateTime.Now.Ticks;
i1=0;
// second for loop - 1Billion iterations
for (i=0;i<1000000000;i++)
{
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
l2=DateTime.Now.Ticks;
// print results
Console.WriteLine("Time befre: {0}",l1);
Console.WriteLine("Time after: {0}",l2);
l2-=l1;
Console.WriteLine("Time taken in seconds: {0}",(double)l2/10000000);
Console.ReadLine();
}
C:
--
#include <time.h>
main() {
// variables
int i, i1=0;
int ar[1000];
clock_t c1, c2;
// first for loop - 1Billion iterations
for (i=0;i<1000000000;i++) {
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
c1=clock();
i1=0;
// second for loop - 1Billion iterations
for (i=0;i<1000000000;i++) {
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
c2=clock();
// print results
printf("Time befre: %d\n",c1);
printf("Time after: %d\n",c2);
c2-=c1;
printf("Time taken in seconds: %f",(float)c2/1000);
getchar();
}
C#:
---
public static void Main()
{
// variables
int i, i1=0;
int[] ar=new int[1000];
long l1, l2;
// first for loop - 1Billion iterations
for (i=0;i<1000000000;i++)
{
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
l1=DateTime.Now.Ticks;
i1=0;
// second for loop - 1Billion iterations
for (i=0;i<1000000000;i++)
{
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
l2=DateTime.Now.Ticks;
// print results
Console.WriteLine("Time befre: {0}",l1);
Console.WriteLine("Time after: {0}",l2);
l2-=l1;
Console.WriteLine("Time taken in seconds: {0}",(double)l2/10000000);
Console.ReadLine();
}
C:
--
#include <time.h>
main() {
// variables
int i, i1=0;
int ar[1000];
clock_t c1, c2;
// first for loop - 1Billion iterations
for (i=0;i<1000000000;i++) {
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
c1=clock();
i1=0;
// second for loop - 1Billion iterations
for (i=0;i<1000000000;i++) {
ar[i1]=i;
i1++;
if (i1==1000) i1=0;
}
// measure time
c2=clock();
// print results
printf("Time befre: %d\n",c1);
printf("Time after: %d\n",c2);
c2-=c1;
printf("Time taken in seconds: %f",(float)c2/1000);
getchar();
}