■101278 / inTopicNo.1) |
自作の構造体の方が遅くなる理由 |
□投稿者/ ぼんど (1回)-(2023/01/28(Sat) 19:41:55)
|
分類:[.NET 全般]
VB.NETを使っております。
以下のような自作の3次元構造体を使用しています。
Public Structure PointF_3D
Property X As Single
Property Y As Single
Property Z As Single
End Structure
実はこれと同じ機能をもった構造体でVector3とよばれるものが、
OpenTK.DLLに含まれています。
https://opentk.net/api/OpenTK.Mathematics.Vector3.html
基本は上記の自作の構造体と同じなのですが、
LengthSquaredやYxzやXyzなど多数のメソッドが含まれています。
そのため、自作の構造体の方がシンプルなので、
高速化できると予想しました。
しかし、実際に計算速度を比較してみると、
OpenTK.DLLのVector3の方が30%程度高速化できることが分かりました。
デバッグモードでテストすると、更に3倍程度も速度に差が見られます。
一体、なぜこのような速度の差が見られるのでしょうか?
自作の構造体でも高速化することは可能なのでしょうか?
なお、速度比較は以下のようなもので行っています。
Dim ss As New Stopwatch
Dim hh As Integer = 100000000
Dim aa(hh) As OpenTK.Vector3
Dim bb(hh) As PointF_3D
Dim RefVal1 As New OpenTK.Vector3(0.5, 0.1, 0.3)
Dim RefVal2 As New PointF_3D(0.5, 0.1, 0.3)
ss.Restart()
For i = 0 To hh
'384ms
aa(i).X = RefVal1.X
aa(i).Y = RefVal1.Y
aa(i).Z = RefVal1.Z
Next
MsgBox(ss.ElapsedMilliseconds)
ss.Restart()
For i = 0 To hh
'543ms
bb(i).X = RefVal2.X
bb(i).Y = RefVal2.Y
bb(i).Z = RefVal2.Z
Next
MsgBox(ss.ElapsedMilliseconds)
|
|