title: Understanding time.perf_counter() and time.process_time()
body: <p>I have some questions about the new functions <code>time.perf_counter()</code> and <code>time.process_time()</code>.</p>
  
  <p>For the former, from the documentation:</p>
  
  <blockquote>
    <p>Return the value (in fractional seconds) of a performance counter, i.e. <strong>a clock with the highest available resolution</strong> to measure a short duration. It does include time elapsed during sleep and is system-wide. The reference point of the returned value is undefined, so that only the difference between the results of consecutive calls is valid.</p>
  </blockquote>
  
  <p>Is this 'highest resolution' the same on all systems? Or does it always slightly depend if, for example, we use linux or windows?<br>
  The question comes from the fact the reading the documentation of <code>time.time()</code> it says that 'not all systems provide time with a better precision than 1 second' so how can they provide a better and higher resolution now?</p>
  
  <p>About the latter, <code>time.process_time()</code>:</p>
  
  <blockquote>
    <p><strong>Return the value (in fractional seconds) of the sum of the system and user CPU time of the current process.</strong> It does not include time elapsed during sleep. It is process-wide by definition. The reference point of the returned value is undefined, so that only the difference between the results of consecutive calls is valid.</p>
  </blockquote>
  
  <p>I don't understand, what are those 'system time' and 'user CPU time'? What's the difference?</p>