¿Hay alguna forma de que pueda verificar (no forzar) si un método o aprovisionamiento de propiedad dado se incluye en una versión de lanzamiento?Método de verificación Inlineación en C#
Respuesta
Nunca están incluidos en el compilador de C#. Solo const
campos son.
Puede echar un vistazo a las optimizaciones del compilador de C# here.
Usted puede asegurarse de que un método o propiedad de acceso es Nunca inline con este atributo que se le aplica:
[MethodImpl(MethodImplOptions.NoInlining)]
No - porque no sucede en tiempo de compilación; sucede en el momento JIT. El compilador de C# no realizará ninguna alineación; Depende de la CLR que el código termine ejecutándose.
puede descubra esto usando cordbg con todas las optimizaciones de JIT activadas, pero necesitará buscar el código de ensamblaje. No sé de ninguna manera de descubrir esto dentro del código. (Es posible que pueda hacerlo con la API del depurador, aunque eso puede deshabilitar algunas líneas internas para comenzar.)
Tendría que mirar el código de la máquina. Establezca un punto de interrupción en la llamada al método y, cuando llegue, haga clic con el botón derecho y elija Ir al ensamblaje. Si no ve el enunciado CALL, entonces lo tiene encriptado. Sin embargo, para estar realmente seguro, tendrá que estar un poco más actualizado con el código de la máquina de lectura, es posible que vea una llamada que estaba en el método en línea.
Para hacer esto preciso, tendrá que usar Herramientas + Opciones, Depuración, General, desmarque "Suprimir la optimización de JIT en la carga del módulo". Lo que garantiza que la fluctuación de fase se comporte como lo hace sin el depurador, los métodos no se incluirán cuando el optimizador esté desactivado.
Agregue el código dentro del cuerpo del método para examinar el seguimiento de la pila usando StackFrame
. En mi experiencia, los métodos en línea se excluyen de este seguimiento de pila.
Es posible sin mirar el código de montaje:
http://blogs.msdn.com/b/clrcodegeneration/archive/2009/05/11/jit-etw-tracing-in-net-framework-4.aspx
- 1. Inlineación en Java
- 2. Método de solicitud de verificación ASP
- 3. Verificación de un método se llamó
- 4. x509 verificación de certificado en C
- 5. verificación de tipo enum en C/gcc
- 6. java args array en el método main() confusión (verificación nula)
- 7. C++ verificación de concepto vs herencia
- 8. Agregando las casillas de verificación en el TREEVIEW en C#
- 9. Método en C++
- 10. método de recursión en C#
- 11. Método sellado en C#
- 12. Método-encadenamiento en C#
- 13. Captcha de verificación de imagen: en C# .net y asp.net
- 14. Biblioteca de verificación de firma XML en C?
- 15. Verificación de que una cadena contiene sólo letras en C#
- 16. Verificación de que la memoria se ha inicializado en C
- 17. Marca de verificación en una casilla de verificación
- 18. método de extensión para un método C#
- 19. Método Inline throw() en C++
- 20. Método virtual privado en C++
- 21. Método Flatten Ruby en C#
- 22. anulable método en el C#
- 23. C#: cómo realizar una verificación nula en un objeto dinámico
- 24. C/C++ función/método de decoración
- 25. Verificación de asociaciones ActiveRecord en RSpec
- 26. C# nuevo en declaración de método
- 27. Rendimiento de C# en el método anidado
- 28. Operadores como parámetros de método en C#
- 29. Método de extensión para Int32 en C#
- 30. ¿Mejor método de sincronización en C?