使用C#获取系统时钟/时间而不使用任何对象?

Tho*_* Lv 0 c# time datetime

我正在使用C#开发一个应用程序,它需要在非常特定的时间进行许多函数调用(每秒100-1000次).但是,这个应用程序的延迟有非常严格的规范,因此由于与垃圾收集相关的延迟增加,我不可能使用DateTime或Timer对象.有没有什么方法可以作为基本类型访问系统时间,而不必创建DateTime对象?

TL; DR:对于C#,Java的System.currentTimeMillis()是否有模拟?

Jon*_*eet 5

是什么让你认为DateTime分配对象?这是一种价值类型.不需要堆分配,因此不需要垃圾回收.(正如TomTom所说,如果你有严格的延迟要求,你需要一个实时操作系统等.如果你只有"低"延迟要求,那就是另一回事了.)

您应该可以使用DateTime.Now或DateTime.UtcNow不使用任何问题 - UtcNow速度更快,因为它不执行任何时区转换.

举个例子,我只需要拨打1亿个电话DateTime.UtcNow,然后使用该Hour属性,在我的笔记本电脑上需要大约3.5秒.使用Ticks属性(不涉及太多计算)大约需要1.2秒.不使用任何属性,只需1秒钟.

所以基本上如果你每秒只执行1000次呼叫,那将是无关紧要的.