C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

型変換の処理速度について

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■90946 / inTopicNo.1)  型変換の処理速度について
  
□投稿者/ 悩み中 (1回)-(2019/05/14(Tue) 18:11:29)

分類:[.NET 全般] 

OS:Windows10
Visual Basic 2010

について2つ質問があります。

1)CstrとTostringでは、どちらの方が処理速度が速いでしょうか?
2)明示的型変換(CINT,CLNG等指定)と暗黙の型変換(指定無し)では、どちらの方が処理速度が速いでしょうか?

引用返信 編集キー/
■90952 / inTopicNo.2)  Re[1]: 型変換の処理速度について
□投稿者/ キングダム (24回)-(2019/05/14(Tue) 20:56:43)
No90946 (悩み中 さん) に返信

そりは質問することじゃなくて確認することでは?
クイズだと思って答えて見ようと思います

1)CstrとTostringでは、どちらの方が処理速度が速いでしょうか?

ToStringが速いです、CStrは昔から存在する古いメソッドなので
新しいToStringが速いと思います

2)明示的型変換(CINT,CLNG等指定)と暗黙の型変換(指定無し)では、どちらの方が処理速度が速いでしょうか?

明示的型変換が速いです
暗黙の型変換ではランタイムが型の確認をすると思うからです

確認した結果をお教えいただければ幸いでございます
引用返信 編集キー/
■90955 / inTopicNo.3)  Re[1]: 型変換の処理速度について
□投稿者/ とっちゃん (590回)-(2019/05/14(Tue) 21:24:07)
No90946 (悩み中 さん) に返信

> 1)CstrとTostringでは、どちらの方が処理速度が速いでしょうか?
> 2)明示的型変換(CINT,CLNG等指定)と暗黙の型変換(指定無し)では、どちらの方が処理速度が速いでしょうか?
> 
確認の方法がわからないということで、一つだけ計測サンプルコードを書いておきます。

VBでコンソールアプリを作成して、下記コードを張り付ければ動くと思います。
下記のコードは、CStr の計測例です。
環境によって、100000000 の部分の数字を大きくすればそれだけ平均値が均一化します。
あくまでも平均値なので、環境に依存しますが、これを比較したいものごとに用意して
いろいろと計測してみれば、ざっくり程度ですが、簡単な計測ができます。

最初に一回ループの外側で呼び出しているのは、JIT分をカウントさせないための工夫です。
ちなみに、デバッグ版で私の環境で下記コードは約7秒でした。
ToStringとどっちが早いか?は計測していません。

私も知りたいので、計測結果を上げてくれると嬉しいです。
あと、その際のTestメソッドの中身も書いてもらえると嬉しいです。
(初めて VB.NETなプロジェクト作ってコード書いたかもw)

Module Module1
  Sub Main()
    TestCstr()
    Dim st As Stopwatch = New Stopwatch
    st.Start()
    For index = 1 To 100000000
      TestCstr()
    Next
    st.Stop()
    Console.WriteLine(st.Elapsed.ToString())
    'この下に、同じようにToStringでの計測を記述する
  End Sub

  Private Function TestCstr() As String
    Dim val As String = CStr(10)
    Return val
  End Function
End Module

引用返信 編集キー/
■91207 / inTopicNo.4)  Re[2]: 型変換の処理速度について
□投稿者/ 悩み中 (2回)-(2019/06/06(Thu) 10:10:39)
No90955 (とっちゃん さん) に返信
> ■No90946 (悩み中 さん) に返信
>
>>1)CstrとTostringでは、どちらの方が処理速度が速いでしょうか?
>>2)明示的型変換(CINT,CLNG等指定)と暗黙の型変換(指定無し)では、どちらの方が処理速度が速いでしょうか?
>>
> 確認の方法がわからないということで、一つだけ計測サンプルコードを書いておきます。
>
> VBでコンソールアプリを作成して、下記コードを張り付ければ動くと思います。
> 下記のコードは、CStr の計測例です。
> 環境によって、100000000 の部分の数字を大きくすればそれだけ平均値が均一化します。
> あくまでも平均値なので、環境に依存しますが、これを比較したいものごとに用意して
> いろいろと計測してみれば、ざっくり程度ですが、簡単な計測ができます。
>
> 最初に一回ループの外側で呼び出しているのは、JIT分をカウントさせないための工夫です。
> ちなみに、デバッグ版で私の環境で下記コードは約7秒でした。
> ToStringとどっちが早いか?は計測していません。
>
> 私も知りたいので、計測結果を上げてくれると嬉しいです。
> あと、その際のTestメソッドの中身も書いてもらえると嬉しいです。
> (初めて VB.NETなプロジェクト作ってコード書いたかもw)
>
> Module Module1
> Sub Main()
> TestCstr()
> Dim st As Stopwatch = New Stopwatch
> st.Start()
> For index = 1 To 100000000
> TestCstr()
> Next
> st.Stop()
> Console.WriteLine(st.Elapsed.ToString())
> 'この下に、同じようにToStringでの計測を記述する
> End Sub
>
> Private Function TestCstr() As String
> Dim val As String = CStr(10)
> Return val
> End Function
> End Module
>
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ