La quota di utilizzo della CPU per le attività in background in WinRT è di 1 secondo o 2 secondi se sono bloccate. La domanda è come misurare con precisione questo utilizzo della CPU - Mi piacerebbe sapere se il mio codice gira sotto questa quota di 2 secondi o no? Immagino che usare solo DateTime.Ora prima e dopo l'esecuzione dell'attività non sia l'approccio giusto.
l'articolo di MSDN su Attività in background:
Supporting your app with background tasksCome misurare con precisione l'utilizzo della CPU nelle attività in background?
risposta
Ho avuto lo stesso problema.
Se si avvia Task Manager
, nella scheda App history
, è possibile visualizzare le statistiche sull'utilizzo delle risorse da varie app. Uno di questi è CPU Time
. Il problema è che non è la media, ma mostra solo il tempo totale di utilizzo della CPU.
Se hai bisogno del tempo medio, il trucco è di tenere un conteggio nella tua app per qualsiasi attività in background, e dividere tutto il tempo per quello, in modo da ottenere un tempo medio.
Immagino che questo sia il meglio che possiamo fare adesso per misurare l'utilizzo della CPU, grazie. –
Ho utilizzato GetProcessTimes WinAPI.
La documentazione dice “desktop applicazioni solo”, ma tecnicamente, è presente anche sui telefoni:
[DllImport("KERNELBASE.DLL", SetLastError = true)]
static extern IntPtr GetCurrentProcess();
// NB! Undocumented API, won't pass marketplace checks.
[DllImport("KERNELBASE.DLL", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetProcessTimes(IntPtr hProcess, out long lpCreationTime, out long lpExitTime, out long lpKernelTime, out long lpUserTime);
Sul PC sostituire KERNELBASE.DLL con Kernel32.dll.
Ciò non supererà la certificazione del marketplace, ma dovrebbe essere sufficiente per valutare l'attività in background.
Chiamare GetProcessTimes quando avviato, calcolare long startTime = KernelTime + UserTime
. Chiama GetProcessTimes al termine, calcola (KernelTime + UserTime) - startTime
e ottieni i tuoi dati. L'unità di misura è 100ns tick, proprio come in TimeSpan.
- 1. come misurare con precisione la larghezza di una stringa?
- 2. Misurare con precisione l'ora dell'orologio da parete in .NET
- 3. Avvio delle attività in background con Capistrano
- 4. Esegui attività in background in Javascript
- 5. Heroku sedici attività in background
- 6. compiti in esecuzione in background con priorità più bassa CPU
- 7. Debug delle attività in background
- 8. Android: Come avviare attività in background
- 9. Come posso coordinare due attività in background?
- 10. Come misurare l'utilizzo della CPU e della memoria del codice F #?
- 11. Come capire l'allocazione della CPU in Mesos?
- 12. Come forzare l'utilizzo massimo della CPU
- 13. attività di background java
- 14. Simulazione di attività in background su AppHarbor
- 15. Esegui attività in background in JavaFX
- 16. R Lucido - Attività in background continua
- 17. Come misurare le prestazioni della query in Oracle
- 18. Numero di CPU per attività in Scintilla
- 19. Come misurare le prestazioni di un'applicazione Java?
- 20. Utilizzo della CPU con golang
- 21. Geocoding: precisione richiesta nelle coordinate GPS?
- 22. TabActivity attività bambino con BroadcastReceiver rimane vivo in background
- 23. Attività asincrone e CPU associate a Python?
- 24. Affidabile attività in background ripetuta su Android
- 25. Come posso misurare la dimensione del testo nelle app UWP?
- 26. Misurare accuratamente le prestazioni della procedura memorizzata
- 27. Processo figlio per attività intensiva CPU?
- 28. Git post-commit hook come attività in background
- 29. Come misurare "query al secondo"?
- 30. utilizzando GIN nelle attività GWT
Direi anche che un i5 può eseguire più codice di un processore basato su ARM ... Avrò così bisogno del processore più lento per testare se la mia app non impiegherà più di 2 secondi? – GameScripting
Un buon punto, se è giusto, abbiamo molto meno potenza di calcolo per il nostro lavoro in background sui tablet ARM di fascia bassa rispetto ai desktop Oveclocked Core-i7. –
I web worker sono gli stessi delle attività in background? Vorrei recuperare e memorizzare nella cache le immagini, ma 2 secondi non sembrano abbastanza tempo di elaborazione (soprattutto perché mi piacerebbe ritagliarli e salvarli). – kamranicus