- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个自己的 GetTickCount() 函数返回一个无符号整数(计数在 0xFFFFFFFF 上翻转为零)
我无法用以下方法测量耗时:
unsigned int elapsed;
unsigned int start = GetTickCount();
LongOperation();
unsigned int stop = GetTickCount();
if (stop >= start )
elapsed = stop - start;
else
elapsed = (INT_MAX - start) + stop;
如果我对有符号进行转换,这是否相同(我测量的时间跨度总是小于可以用有符号整数表示的时间 - 我认为大约 24 天)? :
int start = (int)GetTickCount();
LongOperation();
int elapsedTime = (int)GetTickCount() - start;
如果我查看 .net Environmet.TickCount 属性:
TickCount will increment from zero to Int32..::.MaxValue for approximately 24.9 days, then jump to Int32..::.MinValue, which is a negative number, then increment back to zero during the next 24.9 days.
所以当我将我的 GetTickCount() 函数转换为有符号整数时,我应该从 .net 获取行为(包装发生在 0x7FFFFFFF->0x80000000 上)?
有了这个应该可以测量耗时如下(见另一篇文章):
int start = Environment.TickCount;
DoLongRunningOperation();
int elapsedTime = Environment.TickCount - start;
最佳答案
Windows 中 C++ 中 GetTickCount()
的原型(prototype)是:
DWORD WINAPI GetTickCount(void);
所以,我会这样编码(类似于其他答案):
DWORD start = GetTickCount();
dosomething();
DWORD elapsed = GetTickCount() - start;
将测量耗时,直到 DWORD
可以表示的最大数字。
正如其他人所说,使用无符号算术,您无需担心计数器环绕 - 自己尝试...
同时检查 GetTickCount64()
和 QueryPerformanceCounter()
/QueryPerformanceFrequency()
。 GetTickCount64()
允许您测量更长的时间间隔,但并非所有版本的 Windows 都支持它,而 QueryPerformanceCounter()
允许您测量更高的分辨率和精度.例如,在某些 Windows 版本上,GetTickCount()
可能仅精确到大约 18 毫秒,而 QueryPerformanceCounter()
将优于 1us。
关于c++ - 无符号 tickCount/Wrapping 的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491001/
MSDN 文档将 Environment.TickCount 属性描述为自系统 启动以来的毫秒数。但是,返回值描述为自计算机 启动以来的毫秒数。 是哪一个? 顺便说一句,我认为系统重启是在不关闭计算机
Linux 有类似 GetTickCount() 的函数吗? 我尝试了一些其他的 sutff,但它们根本不起作用。 因此它应该返回自启动以来的精确时间(以毫秒为单位)。 最佳答案 /// Return
我很好奇 .NET BCL 属性 Environment.TickCount 是如何实现的。特别是我现在想如果它受到system time adjustments的影响. 我对如何实现该属性的第一个猜
我有以下控制台应用程序代码片段,如果空闲时间超过 5 秒,我想锁定我的计算机。 问题:5 秒后什么也没有发生 public static uint GetIdleTime() {
我正在捕获 C# 程序中的一些事件,这些事件以时间戳作为系统滴答计数(自开始时间以来的毫秒数)返回。 根据我看到的其他问题,知道我可以从 System.Environment.TickCount 获得
我想知道系统最后一次启动是什么时候。 Environment.TickCount 可以工作,但由于 int 的限制,它会在 48-49 天后中断。 这是我一直在使用的代码: Environment.T
根据文档, Environment.TickCount 返回“自系统启动以来经过的毫秒数”。 我每天都关机,所以 TickCount应该不会少于一天吧?但是当我在启动计算机后运行它时: TimeSpa
这段 C# 代码在 Java 中的等价物是什么? int tick = 0; tick = Environment.TickCount; 最佳答案 在 Java 中没有标准的方法来让系统正常运行。如果
我有一个自己的 GetTickCount() 函数返回一个无符号整数(计数在 0xFFFFFFFF 上翻转为零) 我无法用以下方法测量耗时: unsigned int elapsed; unsigne
我发现了一个 Random 实例的初始化: var random = new Random(unchecked(Environment.TickCount * 31)); 为什么不简单地使用 new
是否可以使用 Environment.TickCount 来计算时间跨度? int start = Environment.TickCount; // Do stuff int duration =
System.Environment.TickCount 的 WinRT 替代品是什么? 最佳答案 它应该可用,因为它 isn't a problem .但它不是,我猜是 [TypeForwarded
当我使用WinDBG 分析内核模型转储文件时,我可以得到某个线程的信息。但是有些项目让我感到困惑。 所以请大家帮我理解下面关键词的意思。谢谢。 等待开始 TickCount 蜱虫 用户时间 内核时间
从我的报告中找到一个屏幕。 它是一个带有多轴图表中的类别数据集的 AreaChart。 Y 轴结构良好。 X 轴不是。 X 轴基于时间戳字段。 我可以在 iReport 中配置 TickCount 吗
看起来 Environment.TickCount 至少在 iOS 11.2 中改变了它的行为。在装有 iOS 10.3 的 iPad 上,它返回设备启动后的毫秒数。但是在 iOS 11.2 的 iP
我正在尝试将 int 值 Environment.TickCount 转换为 dd:HH:mm:ss:ms (days:hours:minutes:seconds:milliseconds) 格式 有
嘿,最近,我一直在努力寻找消除线程 hibernate 的好方法(以防它受到干扰或您的计算机运行缓慢等)。 那么哪种方法总体上“性能更好”? C# 的 JAVA System.currentTimeM
此代码在 c# 上运行 int x = Environment.TickCount; docs for Environment.TickCount Gets the number of millise
对于 Python2.6,Evt 模块(来自 Carbon import Evt)似乎没有响应 OSX 上的 TickCount()。但是Python2.5没问题: from Carbon impor
我是一名优秀的程序员,十分优秀!