Una gran cantidad de comprobación de límites de matriz ralentiza la velocidad, esto es especialmente cierto para las matrices 2D. ¿Hay alguna manera de escribir bloques de código inseguros en F #?¿F # tiene una sintaxis equivalente al bloque "inseguro" de C#
Respuesta
No soy un programador F# pero, por lo que puedo ver, no parece tener la palabra clave unsafe.
Posiblemente pueda obtener un aumento de rendimiento al transformar la matriz 2D en una matriz unidimensional.
Consejo 5: Hasta que este derecho, que sugeriría que los usuarios de .NET hacen lo que los programadores numéricos muchos C++ hacen: escribir una clase para implementar su matriz n-dimensional. Esto sería representado como una matriz unidimensional, y los accesadores relevantes serían convertir n índices en 1 a través de multiplicaciones apropiadas. Nosotros casi con certeza no eliminaríamos la comprobación de límites en el arreglo de 1-d, , pero al menos solo haríamos un control.
El artículo de MSDN que señala hace una lectura realmente interesante :-) –
Yo también lo pensé y dado que se trata del CLR, debería ser independiente del idioma. –
No en esta versión y dudo que alguna vez lo añaden.
No lo he usado para saber si/cómo se aplica, pero sírvase consultar NativePtr module.
Consulte here para obtener algunas formas de que el compilador elimine la verificación de límites por usted. Básicamente, necesita escribir sus loops de tal forma que el compilador sepa que sus índices estarán dentro de los límites. Si sabe que estará dentro de los límites, cuando ejecutas el modo de lanzamiento sin depuración, el compilador JIT eliminará los controles de límites por ti.
- 1. bloque de sintaxis C Objetivo
- 2. ¿Hay un equivalente al F # Seq.windowed en C#?
- 3. F # List.map equivalente en C#?
- 4. F # constructor de sintaxis
- 5. ¿Tiene VB.NET una sintaxis de declaración de cadena multilínea equivalente a C#?
- 6. ¿F # tiene un equivalente a la toma de Haskell?
- 7. ¿Tiene C# un equivalente al encodeURIComponent() de JavaScript?
- 8. F # Sintaxis Pregunta
- 9. F # sintaxis de instancia
- 10. F # equivalente a Eval
- 11. molde genérico inseguro al deserializar una colección
- 12. C# más cercano equivalente a la expresión de coincidencia F #?
- 13. ¿PHP tiene un equivalente al operador || =?
- 14. Rubí Bloque Error de sintaxis
- 15. ¿Equivalente al método Seq.scan() de F # en Python?
- 16. "Curl -F" equivalente Java
- 17. java equivalente a printf ("% *. * F")
- 18. Sintaxis para Objective C-propiedad de tipo bloque (sin typedef)
- 19. ¿F # tiene soporte aritmético genérico?
- 20. F # equivalente de la C# typeof (IEnumerable <>)
- 21. F # función de llamar la confusión sintaxis
- 22. ¿C# tiene un equivalente std :: nth_element?
- 23. ¿Tiene PHP un equivalente del #ifdef de C/C++?
- 24. Operador de negación lógica en F #? (! -equivalente)
- 25. F # equivalente de la C# 'objeto' palabra clave
- 26. ¿Cuál es el equivalente de VB.NET al bloque "using" de C#
- 27. C# equivalente al símbolo Ruby
- 28. por qué "f = f ++" no es seguro en c?
- 29. Sintaxis del bloque Objective-C: ¿alguien puede explicar esto?
- 30. ¿Existe una sintaxis de C# equivalente para la definición de estructura anónima en línea de C?
No es algo que haga todos los días, pero F # le permite escribir CLR literales en el código, apuesto a que hay una manera de hacer operaciones de puntero inseguras a través de él. – Juliet