我有一个方法,一次调用将被调用几百次,并且我可以选择如何调用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
或者这可能意味着您可以随时打电话。也许您甚至希望在同一请求期间始终拥有相同的时间 - 这都在您的设计中。
在您确实有理由担心之前,不要担心性能。
慕码人8056858
TA贡献1803条经验 获得超6个赞
默认情况下,系统时钟无论如何仅每 15 毫秒更新一次,因此在您的方法中反复检查时间没有任何优势。
至于方法本身的效率——检查参考来源。它对 CLR 进行一次调用来获取文件时间。其余部分是在优化的struct
. 这不太可能花费大量时间。
- 2 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消