|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
[C] ORARIO DI SISTEMA
Salve a tutti!Io avrei bisogno di trovare il codice in c che mi permette di conoscere l'orario del sistema. In particolare ho bisogno che il valore restituito sia di una precisione dell'ordine dei microsecondi..visto che mi serve per verificare le prestazioni di un protocollo..qualcuno mi può aiutare??!
![]() |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
in C ci sono una miriade di funzioni che servono a prendere il tempo; una che misura anche i microsecondi è questa qua:
http://www.linuxmanpages.com/man2/gettimeofday.2.php ma forse a quei livelli avresti bisogno di un sistema realtime... |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
io al momento devo solo far in modo che in un determinato istante che do io in ingresso come variabile mi parta un'operazione di misura senza utilizzare il real time..
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Anche usando un timer ad alta risoluzione dovrai tenere conto dell'overhead delle chiamate, dei limiti hardware e dell'esistenza di un ambiente multitasking. |
|
![]() |
![]() |
![]() |
#5 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
se nel processo gira un solo thread non mi pare molto difficile, basta prendere il tempo trascorso in user-mode...
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
![]() |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() scusa, se io scrivo un programma monothread e voglio misurare il tempo che richiede l'esecuzione di un algoritmo, la differenza dei tempi presi con la GetProcessTimes prima e dopo l'esecuzione mi sembra un ottimo indicatore... giusto l'altro giorno stavo lavorando ad un progetto per l'università in cui bisognava condurre, come bonus, un "confronto sperimentale" tra alcuni algoritmi su grafi (Dijkstra, Bellman-Ford-Moore, Floyd-Warshall) che la traccia richiedeva di implementare in C. in quel progetto ho sentito la mancanza della funzione GetProcessTimes: non la potevo utilizzare perché le specifiche richiedevano che il codice fosse scritto in puro C89, ma sarebbe stata assolutamente perfetta per misurare i tempi richiesti da ciascuno. (per la cronaca alla fine ho usato clock). |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Esiste una letteratura sconfinata sulle tecniche di benchmarking e sui pitfall nei quali si può incorrere se si utilizza un approccio troppo naïf. |
|
![]() |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
che altro può fare il processo se ci gira solo il thread che esegue quell'algoritmo?
|
![]() |
![]() |
![]() |
#12 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#14 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
|
||
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Come ti ho già fatto notare esiste una letteratura imponente in materia di benchmarking, e sarebbe davvero molto comodo gettarla nella spazzatura chiamando una funzioncina... Purtroppo non è possibile, come non è possibile riassumere tutta la casistica e le soluzioni adottabili in un forum. |
|
![]() |
![]() |
![]() |
#16 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() con tutto rispetto per la letteratura sul benchmarking, l'informatica è una di quelle scienze in cui esiste letteratura per ogni cazzata, indipercui: OT ![]() ricominciamo daccapo: un tizio arriva sul forum e mi chiede una funzione per prendere tempi ad alta risoluzione allo scopo di cronometrare del software; mi pare di non fargli nulla di male nel suggerirgli di prendere i tempi trascorsi in user-mode tramite GetProcessTimes e GetThreadTimes, in quanto gli permettono di eliminare direttamente gli overhead causati dal multitasking di un sistema che realtime non è. ribadisco: tu che proponi di meglio? se poi i suoi algoritmi sono implementati in multithreading o in maniera distribuita o infarciti di operazioni che non hanno nulla a che vedere con l'algoritmo, se la vede lui; lui ha chiesto una funzione per cronometrare, poi son fatti suoi. |
|
![]() |
![]() |
![]() |
#17 | ||
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Ti suggerisco di fare una prova, cerca getthreadtimes benchmark con Google. Troverai una trentina di paginette scarse, la maggior parte delle quali off-topic. L'unica che ha attinenza con l'argomento (The Poorman's Profiler, il profiler del poveraccio per intenderci) recita: Quote:
|
||
![]() |
![]() |
![]() |
#18 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
|
||
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Premessa: per il timing di programmini semplici le funzioni di sistema suggerite finora (GetThreadTimes, QueryPerformanceCounter, gettimeofday, ...) vanno più che bene.
L'impalamento scatta d'ufficio quando si cerca di applicare gli stessi metodi a sistemi software di una certa complessità, in tali casi librerie specifiche (es. Google Perfomance Tools) o strumenti quali i profiler (es. Intel VTune) sono indispensabili. |
![]() |
![]() |
![]() |
#20 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:42.