为了账号安全,请及时绑定邮箱和手机立即绑定

在 ASP.NET MVC 中获取 DateTime.UtcNow 的成本有多大?

在 ASP.NET MVC 中获取 DateTime.UtcNow 的成本有多大?

C#
犯罪嫌疑人X 2023-08-13 14:05:45
我有一个方法,一次调用将被调用几百次,并且我可以选择如何调用DateTime.UtcNow:DateTime.UtcNow在方法内部请求,DateTime.UtcNow每次都会获取;或者作为DateTime.UtcNow该方法的参数,并且仅获取一次(但DateTime对于每个保存的条目,保存的值将相隔几毫秒,但这很好)。现在这个问题有了明显的答案,但现在我很好奇:获取 的成本是多少DateTime.UtcNow?
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

DateTime.UtcNow涉及一些工作和本机调用,因此这并非完全微不足道。

但是,您正在执行 I/O。无论您正在执行哪种类型的 I/O,任何DateTime.UtcNow调用都将与 I/O 相比完全相形见绌。DateTime.UtcNow在我的计算机上(使用我的运行时版本、我的 Windows 版本等)进行的调试构建和无编译器优化的简单测试表明,我每秒可以进行 700 万次调用。它甚至不使用任何CPU。对于这个对象,你没有什么可以做的,DateTime它会明显更快。你把它保存在数据库中吗?这要慢几个数量级。您将其保存在文件中吗?同样,速度慢了几个数量级。你把它寄回给客户吗?同样,速度慢了几个数量级。

因此,除非您需要在请求期间调用DateTime.UtcNow十万次,否则请重点关注使代码易于理解。这可能意味着存储DateTime.UtcNow在本地,或者在字段中或通过方法参数传递;DateTime.UtcNow或者这可能意味着您可以随时打电话。也许您甚至希望在同一请求期间始终拥有相同的时间 - 这都在您的设计中。

在您确实有理由担心之前,不要担心性能。


查看完整回答
反对 回复 2023-08-13
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

默认情况下,系统时钟无论如何仅每 15 毫秒更新一次,因此在您的方法中反复检查时间没有任何优势。

至于方法本身的效率——检查参考来源。它对 CLR 进行一次调用来获取文件时间。其余部分是在优化的struct. 这不太可能花费大量时间。


查看完整回答
反对 回复 2023-08-13
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信