He estado buscando en las diferentes bibliotecas de registro Scala últimamente, y la gran mayoría de ellos ejecutar sus funciones de registro comorendimiento en las bibliotecas de registro Scala llamada por valor vs llamada por nombre
def debug(s: => String)
De modo que si tiene el registro de depuración desactivado, no ejecutará la declaración. Sin embargo, me encontré con logula que establezca específicamente como uno de sus beneficios
A diferencia de una gran cantidad de bibliotecas registro de Scala, Logula no utiliza pase por nombre de la semántica (por ejemplo, f: => A) por sus declaraciones de registro, lo que significa dos cosas:
- El compilador Scala no tiene que crear una sola vez los objetos de cierre para cada declaración de registro. Esto debería reducir la cantidad de basura presión de la colección.
que en realidad hace total sentido para mí. Entonces, mi pregunta es, ¿hay algún punto de referencia/datos de rendimiento del mundo real que compare los 2 enfoques? ¿Idealmente algo de un proyecto en vivo versus puntos de referencia artificiales?
'Personalmente, creo que este tipo de comprensión de los principios básicos de las concesiones es aún más valioso que un estudio de caso de una aplicación en particular. Aunque definitivamente estoy de acuerdo con el principio aquí, la realidad puede ser una bestia completamente diferente a la tuya prever. Es por eso que estoy buscando casos de la vida real en lugar de puntos de referencia, porque cualquiera puede escribir un punto de referencia que hace que una forma parezca un millón de veces más rápida. Principalmente por mi propia curiosidad, porque, sinceramente, ¿qué aplicación está registrando realmente el cuello de botella? – Falmarri
@Falmarri - Puede ser diferente de lo que esperas _especialmente_ si piensas en ejemplos. Es por eso que expliqué las desventajas fundamentales. Estoy de acuerdo en que la registración no debería ser el cuello de botella en la mayoría de las aplicaciones. –
@Falmarri Bueno ... ¿Mides todo? Hay personas que juran al medir cada paso de su aplicación, incluido el tamaño de la cola, el rendimiento y el tiempo de respuesta.Si realiza esa ruta, no desea que su registro se agregue al tiempo total. De hecho, quieres que sea asincrónico. –