2010-03-28 16 views
6

Sospetto che le chiamate da thread separati (> 15) abbiano un effetto negativo sulle prestazioni. C'è un modo migliore per ottenere il tempo di sistema in applicazioni concorrenti?Collo di bottiglia delle prestazioni nelle chiamate simultanee a System.currentTimeInMillis()

+1

non penserei così, la maggior parte dei sistemi operativi fornire un buon supporto per questo tipo di funzione ed è probabilmente implementato come metodo nativo. Perché stai incolpando questo metodo per i tuoi problemi di prestazioni? –

+2

Che profilazione hai fatto che mostra che questa funzione è il problema? –

risposta

1

Solo un piccolo consiglio:

ho letto da ingegneri di Google e di altri programmatori che è meglio usare System.nanoTime. Ad esempio joshua bloch

per intervallo di temporizzazione, utilizzare sempre System.nanoTime a preferenza di System.currentTimeMillis

+2

Non risponde alla domanda. Inoltre, anche secondo la tua citazione, System.nanoTime è preferito per la temporizzazione dell'intervallo, non si fa menzione di ciò che l'OP sta utilizzando per l'ora di sistema. I tempi di intervallo potrebbero non essere applicabili qui. –

+0

Forse non risponde direttamente alla domanda, ma penso che già altri abbiano risposto alla domanda quindi stavo solo fornendo un consiglio che ho letto. – Alfred

+0

http://www.techper.net/2008/08/10/systemcurrenttimemillis-systemnanotime-and-their-resolution/ timeinMillis ha problemi con granularità di MS windows –

5

Se è davvero un problema, è possibile avere un thread in background per memorizzare l'ora corrente in un volatile. Oppure chiamalo meno spesso.

+0

+1: c'è sicuramente qualcosa di strano in un'applicazione che deve effettuare chiamate frequenti a 'System.currentTimeMillis'. –

Problemi correlati