Vb.net CSng()还是x 1F?
假设选项Vb.net CSng()还是x 1F?,vb.net,Vb.net,假设选项对严格a和b-整数 Dim mySingle as Single = a / b ' implicit conversion error 解决方案A) 解决方案B) Dim mySingle as Single = a * 1F / b ' x 1F 哪种解决方案更可取? 如果性能很重要,应该采取什么解决方案?为了可读性和揭示意图,我会选择: Dim mySingle as Single = CSng(a / b) ' CSng 使用A,你很清楚地说,我知道计算会返回不同的类
对
严格<代码>a和b
-整数
Dim mySingle as Single = a / b ' implicit conversion error
解决方案A)
解决方案B)
Dim mySingle as Single = a * 1F / b ' x 1F
哪种解决方案更可取?如果性能很重要,应该采取什么解决方案?为了可读性和揭示意图,我会选择:
Dim mySingle as Single = CSng(a / b) ' CSng
使用A,你很清楚地说,我知道计算会返回不同的类型,这就是我想要的
至于性能——我对每个迭代进行了100万次的快速微基准测试,差异在毫秒到亚毫秒的级别,对CSing
有一个非常微小的优势。不要担心这种转换的性能(当然,您需要自己测试)
基准代码:
Sub Main()
Dim mySingle As Single
Dim a As Integer = 10
Dim b As Integer = 5
Dim iterations As Integer = 1000000
Dim sw As New Stopwatch()
sw.Start()
For i As Integer = 1 To iterations
mySingle = CSng(a / b) ' CSng '
Next
sw.Stop()
Console.WriteLine(String.Format("CSng(a / b) - {0}", sw.Elapsed))
sw.Reset()
sw.Start()
For i As Integer = 1 To iterations
mySingle = a * 1.0F / b ' x 1F '
Next
sw.Stop()
Console.WriteLine(String.Format(" a * 1.0F / b - {0}", sw.Elapsed))
End Sub
为了可读性和揭示意图,我会选择:
Dim mySingle as Single = CSng(a / b) ' CSng
使用A,你很清楚地说,我知道计算会返回不同的类型,这就是我想要的
至于性能——我对每个迭代进行了100万次的快速微基准测试,差异在毫秒到亚毫秒的级别,对CSing
有一个非常微小的优势。不要担心这种转换的性能(当然,您需要自己测试)
基准代码:
Sub Main()
Dim mySingle As Single
Dim a As Integer = 10
Dim b As Integer = 5
Dim iterations As Integer = 1000000
Dim sw As New Stopwatch()
sw.Start()
For i As Integer = 1 To iterations
mySingle = CSng(a / b) ' CSng '
Next
sw.Stop()
Console.WriteLine(String.Format("CSng(a / b) - {0}", sw.Elapsed))
sw.Reset()
sw.Start()
For i As Integer = 1 To iterations
mySingle = a * 1.0F / b ' x 1F '
Next
sw.Stop()
Console.WriteLine(String.Format(" a * 1.0F / b - {0}", sw.Elapsed))
End Sub
你从未说过性能是个问题。也许你应该修改你的问题。当然,这可能是其他解决方案,如CSng(a)/b等:)你从未说过性能是一个问题。也许你应该修改你的问题。当然这可能是其他的解决方案,如CSng(a)/b等:)如果你切换到C,解决方案a可能会把你甩了(因为在C中,
int/int
返回一个int
)如果你切换到C,解决方案a可能会把你甩了(因为在C中,int/int
返回一个int
)