关于MethodImpl Attribute使用的一些问题
Some questions about the usage of MethodImpl Attribute
MethodImplOptions
的 MSDN 参考是这些:
我想知道,首先,我应该在什么情况下使用MethodImpl(MethodImplOptions.Unmanaged)
,最重要的是,这个(如果有的话)的beneffits/optimizations是什么?
我假设我在调用WinAPI函数或第三方库中的函数时应该使用它C/C++,那么,这个代码示例是对的吗?:
<MethodImpl(MethodImplOptions.Unmanaged)>
Public Shared Sub MyMethod()
' Call to
SafeOrUnsafeNativeMethodsClass.RanodmWinAPIFunction()
End Sub
其次,我想了解我应该为在 Class 中声明为共享的方法使用什么值,这些方法可以从代码的任何部分调用。
一个例子:
' Sealed class.
Public NotInheritable Class class1
' No instanceable class.
Private Sub New()
End Sub
Public Shared Function MyFunc(ByVal parameter1 As String) As Boolean
Return A Boolean Value
End Function
End Class
我应该在 MethodImpl
属性中为该方法设置什么 MethodImplOptions
EnumerationI 值?
这是一个演示内联导致性能不佳的用户测试:
但是,我不确定是否应该指定内联,是否应该设置 NoOptimization,或者在共享方法的情况下什么值可以获得最佳性能。
MSDN:
Unmanaged The method is implemented in unmanaged code.
这意味着方法体在非托管代码中,而不是它会被编译成它。此标志用于 C++/CLI 程序集。
我会说不要使用此属性,JIT 应该在需要时自行处理内联(如您发布的文章中所写)。
MethodImplOptions
的 MSDN 参考是这些:
我想知道,首先,我应该在什么情况下使用MethodImpl(MethodImplOptions.Unmanaged)
,最重要的是,这个(如果有的话)的beneffits/optimizations是什么?
我假设我在调用WinAPI函数或第三方库中的函数时应该使用它C/C++,那么,这个代码示例是对的吗?:
<MethodImpl(MethodImplOptions.Unmanaged)>
Public Shared Sub MyMethod()
' Call to
SafeOrUnsafeNativeMethodsClass.RanodmWinAPIFunction()
End Sub
其次,我想了解我应该为在 Class 中声明为共享的方法使用什么值,这些方法可以从代码的任何部分调用。
一个例子:
' Sealed class.
Public NotInheritable Class class1
' No instanceable class.
Private Sub New()
End Sub
Public Shared Function MyFunc(ByVal parameter1 As String) As Boolean
Return A Boolean Value
End Function
End Class
我应该在 MethodImpl
属性中为该方法设置什么 MethodImplOptions
EnumerationI 值?
这是一个演示内联导致性能不佳的用户测试:
但是,我不确定是否应该指定内联,是否应该设置 NoOptimization,或者在共享方法的情况下什么值可以获得最佳性能。
MSDN:
Unmanaged The method is implemented in unmanaged code.
这意味着方法体在非托管代码中,而不是它会被编译成它。此标志用于 C++/CLI 程序集。
我会说不要使用此属性,JIT 应该在需要时自行处理内联(如您发布的文章中所写)。