关于Environment.TickCount属性

关于Environment.TickCount属性

简介

Environment.TickCount属性隶属于System命名空间,变量类型为int
该属性用于获取从0001年1月1日 上午12:00到该属性调用时的计算机时间的毫秒值,通常可以通过两个Environment.TickCount属性判断代码运行的时间

该属性的变量类型为int类型,因此其数据大小为-2147483648~2147483647,且不会在数据溢出时出现System.OverflowException变量溢出错误

使用例

以下代码例通过程序待机语句模拟代码运行,来判断程序运行时间:

class Program  
{  
    static void Main()  
    {  
        // 获取系统启动后的毫秒数  
        int tickCount = Environment.TickCount;  
        Console.WriteLine("当前的TickCount值: " + tickCount);  
  
        // 假设这里有些程序,运行了1000纳秒
        System.Threading.Thread.Sleep(1000);  
  
        // 再次获取TickCount值,并计算经过的时间  
        int newTickCount = Environment.TickCount;  
  
        // 注意:由于TickCount是一个32位int类型的整数 
        // 因此,我们不能简单地通过相减来获取经过的时间  
        // 我们需要使用下面的方法来确保结果是非负的  
        int elapsedMilliseconds = (newTickCount >= tickCount) ? (newTickCount - tickCount) : (Int32.MaxValue - tickCount + newTickCount + 1);  
        
        //输出第二个tickCount值,以供参考
        Console.WriteLine("第二个TickCount值为:{0}" , newTickCount);
        
        Console.WriteLine("经过的时间(毫秒): " + elapsedMilliseconds);  
    }  
}

当在不同时间段运行这段代码时,两个Environment.TickCount的值都会不同。因为该属性代表0001年1月1日 12:00到计算机系统时间所用的毫秒数

注意事项

可以通过使用两个Environment.TickCount值来判断程序运行时间,但一般而言,这种做法是不稳定的,原因如下:

  • Environment.TickCount的类型是int类型,这就代表着它的值范围是-2147483648~2147483647,而当它超出这个范围时,其值将回滚到int.MinValue,即-2147483648并继续递增。
     即使代码运行时Environment.TickCount的值正好是int.MinValue,其也会在大概49.7天后回到int.MinValue的值,这对于需要长时间运行的代码是不稳定的
  • Environment.TickCount的分辨率(即以多少毫秒为一秒)是跟随计算机而定的,这就代表当计算机的分辨率精度较低时,其判断程序运行的精度也会降低

如果需要高精度地判断计算机运行时间,可以使用StopWatch类,详见:stopwatch类

参考文献
Microsoft C#文档:Environment.TickCount属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值