2010-06-24 6 views
0

옵션 Strict On; ab - 정수CSng() 또는 x 1F?

Dim mySingle as Single = a/b ' implicit conversion error 

솔루션 A)

Dim mySingle as Single = CSng(a/b) ' CSng 

용액 B)

Dim mySingle as Single = a * 1F/b ' x 1F 

바람직 용액 무엇인가?
성능이 인 경우 어떤 해결책을 취해야합니까?

+0

솔루션 A가 당신을 던질 수 (C#으로하기 때문에이'INT/int'가 반환하는'int')에서만 읽을 수 있도록 – Powerlord

답변

3

가독성과 계시 목적을 위해, 내가 함께 갈 것입니다, • 사용

Dim mySingle as Single = CSng(a/b) ' CSng 

, 당신은 명확하게 계산은 다른 유형을 반환하고 내가 원하는 무엇 내가 알고, 말하고있다.

퍼포먼스에 관해서 - 나는 각각에 대해 백만 번의 반복 테스트를하는 빠른 마이크로 벤치 마크를 실행했으며 그 차이는 밀리 초에서 서브 밀리 초 수준으로 매우 작은 이점을 가지고 CSing으로 나타났습니다. 이러한 종류의 전환에 대해 실적에 대해 걱정하지 마세요. 물론 직접 테스트해야합니다.

벤치 마크 코드 : 혹시 C 번호로 전환 할 경우

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 
+0

? 퍼포먼스가 처음이라면? – serhio

+0

당신은 성과가 문제가되는 것을 절대로 언급하지 않았습니다. 아마도 당신은 당신의 질문을 수정해야합니다. – Oded

+0

확인을 클릭하여 질문에 반영하십시오. – serhio

관련 문제