function::read_stopwatch_us - Linux


The read_stopwatch_us() function is part of the Linux Performance Application Programming Interface (PAPI) and is designed to retrieve the current elapsed time from a started stopwatch, expressed in microseconds. It is primarily used for performance measurement and to calculate elapsed time with high precision.


#include <papi.h>

int read_stopwatch_us(int EventSet, long long *ns);


  • EventSet: An integer handle to the EventSet containing the stopwatch event to be read.
  • ns: A pointer to a long long integer where the current elapsed time in microseconds will be stored.


Simple usage:

#include <papi.h>

int main() {
  int EventSet = PAPI_NULL;
  long long ns;

  PAPI_add_event(EventSet, PAPI_TOT_CYC);

  // Perform some code whose execution time we want to measure

  PAPI_read_stopwatch_us(EventSet, &ns);
  printf("Elapsed time: %lld microseconds\n", ns);

  return 0;

Common Issues

  • Uninitialized EventSet: Ensure that the EventSet has been created and initialized before using this function.
  • Invalid Event: Check that the EventSet contains a stopwatch event (e.g., PAPI_TOT_CYC).
  • Negative Elapsed Time: If the elapsed time is less than zero, it indicates an error in using the function.


This function can be integrated with other Linux performance tools, such as perf, for comprehensive performance profiling and optimization.

Related Commands

  • PAPI_start(): Starts the specified EventSet and begins accumulating event values.
  • PAPI_stop(): Stops the specified EventSet and ceases accumulating event values.
  • PAPI_cleanup_eventset(): Frees the memory allocated for the specified EventSet.