Mis compañeros de trabajo no me dejan usarlos en ambos terrenos. :(¿Cuáles son las consideraciones de rendimiento y mantenimiento al usar los tipos estructurales de Scala?
Respuesta
Una consideración el rendimiento es que los métodos de tipo estructural se llaman a través de la reflexión, que es mucho más lento en la JVM que una llamada a un método regular. Ver this answer and comments para obtener información detallada.
También depende de lo mucho que los utiliza, M. Odersky and G. Dubochet have some benchmarks in their report.
he descubierto que cuando necesito tipos estructurales, es casi siempre debido a una biblioteca que quería utilizar no está diseñado adecuadamente (por ejemplo, falta superclases en casos como StringBuilder/StringBuffer).
Entonces, si quieres usar tipo estructural Por otras razones, podría tratarse de un problema de diseño, que sería más serio que las consideraciones de configuración o rendimiento. El sistema de tipos de Scala es poderoso, y usar tipos estructurales es un poco como "rendirse" para hacerlo bien con medios "normales". Así que si usted tiene un código que parece "requerir" tipos estructurales, tratar de analizar por qué es de esa manera, y tal vez pedir a la comunidad si se puede mejorar (https://codereview.stackexchange.com/ parece un buen lugar para esto), si usted está atascado.
Por cierto, todo el mundo tiende a abusar de una característica que sólo "asimiló", por ejemplo, los principiantes coinciden como locos una vez que obtienen el concepto, incluso si hay formas mejores (por ejemplo, en el caso de las funciones de opciones como map, flatMap, foreach ...).
- 1. Tipos estructurales y primitivas
- 2. ¿Usos prácticos para tipos estructurales?
- 3. Uso de tipos estructurales Scala con tipos abstractos
- 4. ¿Cuáles son las ventajas y desventajas de usar esquemas XML?
- 5. Consideraciones de rendimiento de Flex
- 6. ¿Ya no se admiten los tipos estructurales recursivos en scala?
- 7. ¿Cuáles son las diferencias entre los tipos de valores y los tipos de referencia en C#?
- 8. ¿Cuáles son los peligros de usar sql_variant?
- 9. ¿Cuáles son los beneficios de usar Scala en .Net?
- 10. ¿Cuáles son los beneficios de Scala?
- 11. ¿Cuáles son las diferencias y similitudes de los sistemas de tipo Scala y Haskell?
- 12. ¿Cuáles son las limitaciones de los Manifiestos de Scala?
- 13. ¿Cuáles son las alternativas al subtipo de polimorfismo en scala?
- 14. ¿Cuáles son las mejores características de Scala?
- 15. ¿Cuáles son las consideraciones más importantes al diseñar una base de datos?
- 16. PreparedStatement, CallableStatement y consideraciones de rendimiento
- 17. ¿Cuáles son las ventajas y desventajas de usar boost :: iterator_facade?
- 18. ¿Cuáles son las implicaciones de rendimiento de usar require_dependency en las aplicaciones de Rails 3?
- 19. ¿Cuáles son las ventajas de usar Qt?
- 20. Observación divertida sobre tipos estructurales (recursivos) en Scala
- 21. ¿Cuáles son las ventajas de usar Automapper?
- 22. ¿Cuáles son las diferencias clave entre Scala y Groovy?
- 23. ¿Cuáles son los pros y los contras de usar Global.asax?
- 24. Tipos estructurales coincidentes con el patrón en Scala
- 25. ¿Cuáles son los inconvenientes de usar Lucene?
- 26. ¿Cuáles son las ventajas y desventajas de usar OpenID?
- 27. ¿Cuáles son las diferencias entre los tipos de datos BLOB y TEXT en MySQL?
- 28. ¿Cuáles son las mejores prácticas al usar SWIG con C#?
- 29. ¿Cuáles son los usos de los tipos polimórficos?
- 30. ¿Cuáles son las ventajas y desventajas de usar el GAC?
Si se olvida de una superclase o interfaz común, no puede ser resuelto a través de esta conversión implícita (proxeneta mi biblioteca)? – ziggystar