// https://gist.github.com/teknoraver/ebee75c5bc4eb8533b8e761d0e57b7d9 // ctx_clock Copyright (C) 2018 Matteo Croce // a tool measure the context switch time in clock cycles #include #include #include #include #include #include int main() { const size_t N = 1'000'000, W = 6; size_t cycles[N]; unsigned junk; for (auto &cycle: cycles) { auto start = __rdtscp(&junk); syscall(-1L); auto stop = __rdtscp(&junk); cycle = stop - start; } std::nth_element(cycles, cycles + N / 2, cycles + N); std::cout << "context switch clock cycles...\n" << "\tminimum: " << std::setw(W) << *std::min_element(cycles, cycles + N) << '\n' << "\tmedian : " << std::setw(W) << cycles[N / 2] << '\n' << "\tmaximun: " << std::setw(W) << *std::max_element(cycles, cycles + N) << '\n'; }