Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
ull t1 = rdtsc();
for (int i = 0; i < inner_len; i += VEC_LEN) {
записать синус angles[i] в sines[i]
}
ull t = rdtsc() - t1;
inline void start()
{
asm volatile ( "cpuid\n\t"
"rdtsc\n\t"
"mov %%edx, %0\n\t"
"mov %%eax, %1\n\t" : "=r"(time_edx), "=r"(time_eax) ::
"%rax", "%rbx", "%rcx", "%rdx");
}
inline void stop ()
{
asm volatile ( "rdtscp\n\t"
"mov %%edx, %0\n\t"
"mov %%eax, %1\n\t"
"cpuid\n\t" : "=r"(time_edx1), "=r"(time_eax1) ::
"%rax", "%rbx", "%rcx", "%rdx");
time_last =
(static_cast<unsigned long long>(time_edx1) << 32 | static_cast<unsigned long long>(time_eax1)) -
(static_cast<unsigned long long>(time_edx) << 32 | static_cast<unsigned long long>(time_eax));
}
Применимость: сравнение однопоточного потенциала процессоров, просто интерес.
Максимально точное измерение кода