首先,两段代码:
C#的main函数:
////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleTestApp
{
class Program
{
static void Main(string[] args)
{
System.TimeSpan Div;
System.DateTime last=DateTime .Now ;
long i = 10000;
int j = 0;
DateTime begin = DateTime.Now;
while (i--!=0)
{
if (!Console.NumberLock)
{
break;
}
else
{
Div = DateTime.Now - last;
if (Div.Ticks > 1)
{
Console.WriteLine ("a");
last = DateTime.Now;
j++;
}
else
{
System .Threading .Thread .Sleep (new TimeSpan (1-Div .Ticks ));
}
}
}
Div = DateTime.Now - begin;
Console.WriteLine("{1}用时:{0}ticks",Div .Ticks ,j );
Console.WriteLine("PRESS ANY KEY TO EXIT!");
Console.ReadKey();
}
}
}
////////////////////////C++的代码
#include "stdafx.h"
#include <time.h>using namespace System;int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
long last= clock();
long past=0;
long i=10000;
int j=0;
long begin=clock();
while(i--!=0)
{ if(! Console::NumberLock )
{
break;
}
else
{
past=clock()-last;
if(past >10)
{
last=clock();
Console::WriteLine ("Y");
j++;
}
else
{
System::Threading ::Thread ::Sleep (System::TimeSpan::FromTicks (10-past));
}
}
}
long use=(clock()-begin);
Console::WriteLine("{0}次用时{1}毫微秒",j,use) ;
Console::WriteLine ("PRESS ANY KEY TO EXIT!");
Console::ReadKey ();
return 0;
}
//////////////////////////////////////////////////
以上代码分别运行,
C#得到的结果
j是一个变化的量,有时候是19,有时候是20、21、22、23、、24、25、甚至26 也曾经有过,
但是在C++里面的J一直是25 ,消耗的时间也一直是391,这是为什么呢?
我是说为什么,c#的代码执行起来有很多变化。而c++貌似很稳定的样子呢?
C#的main函数:
////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleTestApp
{
class Program
{
static void Main(string[] args)
{
System.TimeSpan Div;
System.DateTime last=DateTime .Now ;
long i = 10000;
int j = 0;
DateTime begin = DateTime.Now;
while (i--!=0)
{
if (!Console.NumberLock)
{
break;
}
else
{
Div = DateTime.Now - last;
if (Div.Ticks > 1)
{
Console.WriteLine ("a");
last = DateTime.Now;
j++;
}
else
{
System .Threading .Thread .Sleep (new TimeSpan (1-Div .Ticks ));
}
}
}
Div = DateTime.Now - begin;
Console.WriteLine("{1}用时:{0}ticks",Div .Ticks ,j );
Console.WriteLine("PRESS ANY KEY TO EXIT!");
Console.ReadKey();
}
}
}
////////////////////////C++的代码
#include "stdafx.h"
#include <time.h>using namespace System;int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
long last= clock();
long past=0;
long i=10000;
int j=0;
long begin=clock();
while(i--!=0)
{ if(! Console::NumberLock )
{
break;
}
else
{
past=clock()-last;
if(past >10)
{
last=clock();
Console::WriteLine ("Y");
j++;
}
else
{
System::Threading ::Thread ::Sleep (System::TimeSpan::FromTicks (10-past));
}
}
}
long use=(clock()-begin);
Console::WriteLine("{0}次用时{1}毫微秒",j,use) ;
Console::WriteLine ("PRESS ANY KEY TO EXIT!");
Console::ReadKey ();
return 0;
}
//////////////////////////////////////////////////
以上代码分别运行,
C#得到的结果
j是一个变化的量,有时候是19,有时候是20、21、22、23、、24、25、甚至26 也曾经有过,
但是在C++里面的J一直是25 ,消耗的时间也一直是391,这是为什么呢?
我是说为什么,c#的代码执行起来有很多变化。而c++貌似很稳定的样子呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货