gpt4 book ai didi

c# - 将整数转换为ulong是否会花费大量时间?

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:41 27 4
gpt4 key购买 nike

例:

ulong a = // some value
if(a == 0)
// do something


在执行测试时,是否必须将 a == 0的值0从其默认值转换为ulong。这种转换会花费很多时间吗?

测试 a == 0UL会花费更少的时间吗?

我正在执行一个时间紧迫的项目,因此每次操作少都可以。

最佳答案

长话短说,与较小位宽的常量进行比较不会对运行时产生影响。

这是长话不说的:

当您与常量进行比较时,编译器将在编译时扩大常量,因此不会对运行时产生影响。您不必显式指定常量大小,因为编译器足够聪明,可以找出要使用的正确大小。将double与浮点常量进行比较也是如此。

与变量进行比较时,编译器会生成代码以在运行时扩大该值。根据所涉及的类型和平台(例如32位平台上的64位类型),这可能会花费几个周期。通常,尽管操作相当快。

例如,将有符号的32位整数变量从堆栈加载到无符号的64位寄存器中是在x64平台上的一条指令:

movsx rax, dword ptr[rsp+<offset>]


在x86平台上,需要花费更多的操作才能通过两个32位寄存器加载和符号扩展该值,并且需要花点时间进行操作……这不足为奇。

关于c# - 将整数转换为ulong是否会花费大量时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390990/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com