Sono stato a guardare le varie librerie di registrazione Scala ultimamente, e la stragrande maggioranza di essi implementare le funzioni di registrazione comeprestazioni nelle biblioteche di registrazione scala call-by-value vs chiamata per nome
def debug(s: => String)
In questo modo, se la registrazione di debug è disattivata, non verrà eseguita la dichiarazione. Tuttavia, mi sono imbattuto in logula in cui si afferma espressamente come uno dei suoi vantaggi
A differenza di molti Scala librerie registrazione, Logula non usa passaggio per nome la semantica (per esempio, f: => A) per le sue dichiarazioni di registrazione, che significa due cose:
- Il compilatore Scala non ha bisogno di creare una tantum oggetti di chiusura per ogni dichiarazione di registrazione. Questo dovrebbe ridurre la quantità di pressione di raccolta immondizia.
Che in realtà ha senso per me. Quindi la mia domanda è: ci sono dei benchmark/dati sulle prestazioni reali confrontando i 2 approcci? Idealmente qualcosa da un progetto live rispetto a benchmark artificiali?
'Personalmente, penso che questo tipo di comprensione dei primi principi dei compromessi sia ancora più prezioso di un caso di studio di una particolare applicazione. Mentre sono assolutamente d'accordo con il principio qui, la realtà può essere una bestia completamente diversa da quella che tu anticipare. Ecco perché sto cercando casi di vita reale invece di benchmark, perché chiunque può scrivere un benchmark che faccia sembrare un milione di volte più veloce. Soprattutto per la mia curiosità, perché onestamente, quale applicazione sta registrando davvero il collo di bottiglia? – Falmarri
@Falmarri - Può essere diverso da quello che ci si aspetta _especially_ se si ragiona dagli esempi. Ecco perché ho spiegato i compromessi fondamentali. Sono d'accordo che la registrazione non dovrebbe essere il collo di bottiglia nella maggior parte delle applicazioni. –
@Falmarri Bene ... misurate tutto? Ci sono persone che giurano misurando ogni fase della loro applicazione, tra cui la dimensione della coda, il throughput e il tempo di risposta.Se segui questa strada, non vuoi che la tua registrazione si aggiunga al tempo totale. In realtà, vuoi che sia asincrono. –