W przypadku tego pytania można by użyć lepszego tytułu - na przykład „Jaki jest pomiar czasu użytkownika i systemu?”. Dzięki temu pytanie będzie jaśniejsze dla osób przeglądających listę.
Sharpie
Odpowiedzi:
48
Jest to omówione w ?proc.time( system.time()zwraca obiekt klasy "proc.time"):
Details:
‘proc.time’ returns five elements for backwards compatibility, but
its ‘print’ method prints a named vector of length 3. The first
two entries are the total user and system CPU times of the current
R process and any child processes on which it has waited, and the
third entry is the ‘real’ elapsed time since the process was
started.
....i
Value:
....
The definition of ‘user’ and ‘system’ times is from your OS.
Typically it is something like
_The ‘user time’ is the CPU time charged for the execution of user
instructions of the calling process. The ‘system time’ is the CPU
time charged for execution by the system on behalf of the calling
process._
Najbardziej klarowne wyjaśnienie różnicy między czasem usera systemupływającym czasem, jakie kiedykolwiek czytałem, zostało dostarczone przez Williama Dunlapa w [R-help] :
„Czas procesora użytkownika” podaje czas procesora spędzony przez bieżący proces (tj. Bieżącą sesję R), a „czas procesora systemu” podaje czas procesora spędzony przez jądro (system operacyjny) w imieniu bieżącego procesu. System operacyjny jest używany do takich rzeczy, jak otwieranie plików, wykonywanie operacji wejścia lub wyjścia, uruchamianie innych procesów i patrzenie na zegar systemowy: operacje, które obejmują zasoby, które musi współdzielić wiele procesów.
Chociaż ?proc.timezwraca coś podobnego, ten opis był dla mnie o wiele łatwiejszy do zrozumienia.
Termin „czas procesora użytkownika” może na początku wprowadzać w błąd. Aby było jasne, całkowity czas (rzeczywisty czas procesora) jest połączeniem ilości czasu, jaki procesor poświęca na wykonanie jakiejś czynności dla programu i ilości czasu, jaki procesor spędza na wykonywaniu wywołań systemowych dla jądra w imieniu programu. Gdy program przechodzi w pętlę przez tablicę, gromadzi czas procesora użytkownika. I odwrotnie, gdy program wykonuje wywołanie systemowe, takie jak exec lub fork, gromadzi czas procesora systemu.
Ponieważ te zmienne czasu są definiowane przez system operacyjny, możesz pobrać informacje o tym, jak są obliczane, wykonując man timew powłoce (w systemie Unix):
... Statystyki te składają się z (i) czasu rzeczywistego, który upłynął między wywołaniem a zakończeniem, (ii) czasu procesora użytkownika (suma wartości tms_utimei tms_cutimew struct tms zwróconych przez czasy (2)) oraz (iii) czas procesora systemu (suma wartości tms_stimei tms_cstimew struct tms, zwracana przez times (2)).
Definicję wspomnianych zmiennych czasowych można znaleźć tutaj :
tms_utime Czas procesora użytkownika.
tms_stime Czas procesora systemu.
tms_cutime Czas procesora użytkownika zakończonych procesów potomnych.
tms_cstime Czas procesora systemu zakończonych procesów potomnych.
Wyjaśnienie różnic między czasem użytkownika a czasem systemowym jest opisane w odpowiedzi darocziga oraz w innym miejscu na SO :
tms_utimeElementem jest ilość czasu spędzonego wykonywanie kodu lub kod w bibliotece C. tms_stimeElementem jest ilość czasu spędzonego w jądrze wykonywania kodu w Twoim imieniu.
Odpowiedzi:
Jest to omówione w
?proc.time
(system.time()
zwraca obiekt klasy"proc.time"
):Details: ‘proc.time’ returns five elements for backwards compatibility, but its ‘print’ method prints a named vector of length 3. The first two entries are the total user and system CPU times of the current R process and any child processes on which it has waited, and the third entry is the ‘real’ elapsed time since the process was started.
....i
Value: .... The definition of ‘user’ and ‘system’ times is from your OS. Typically it is something like _The ‘user time’ is the CPU time charged for the execution of user instructions of the calling process. The ‘system time’ is the CPU time charged for execution by the system on behalf of the calling process._
źródło
Najbardziej klarowne wyjaśnienie różnicy między czasem
user
asystem
upływającym czasem, jakie kiedykolwiek czytałem, zostało dostarczone przez Williama Dunlapa w [R-help] :Chociaż
?proc.time
zwraca coś podobnego, ten opis był dla mnie o wiele łatwiejszy do zrozumienia.źródło
Oto kilka prostych wyjaśnień:
Czas, który upłynął, to czas obciążony procesorem (procesorami) za wyrażenie.
Czas użytkownika to czas zegara ściennego. Czas, którego doświadczyłeś jako użytkownik.
Zwykle oba czasy są stosunkowo bliskie. Ale mogą się różnić w innych sytuacjach. Na przykład:
źródło
Ponieważ i tak są one ogólne, z Wikipedii:
http://en.wikipedia.org/wiki/Time_(Unix)#User_Time_vs_System_Time
źródło
Ponieważ te zmienne czasu są definiowane przez system operacyjny, możesz pobrać informacje o tym, jak są obliczane, wykonując
man time
w powłoce (w systemie Unix):Definicję wspomnianych zmiennych czasowych można znaleźć tutaj :
Wyjaśnienie różnic między czasem użytkownika a czasem systemowym jest opisane w odpowiedzi darocziga oraz w innym miejscu na SO :
źródło