LINUX.ORG.RU

Посоветуйте профайлер


0

0

Использую gcc -pg ... && kprof. Не устраивает то, что kprof показывает только то, сколько выполнялась конкретная функция, а хочется капнуть глубже и посмотреть, сколько времени кушают отдельные инструкции внутри функции. Есть ли профайлеры, позволяющие это?

anonymous

попробуй OProfile

yz
()

Google perftools однозначно.

anonymous
()

Огромное спасибо всем - буду пробовать

anonymous
()

> Есть ли профайлеры, позволяющие это?

Отдельные процессорные инструкции, или что? Вообще, это глупость. Если нужда заставляет разбираться в таких вопросах, то учите ассемблер лучше.

mv ★★★★★
()
Ответ на: комментарий от anonymous

Тогда ручками замеряй. Например, на x86(-64) так:

#include <stdio.h>

typedef struct ticks {
	unsigned long hi;
	unsigned long lo;
} ticks_t;

void inline rdtsc(ticks_t* t)
{
	asm volatile ("rdtsc\n"
		      : "=d"(t->hi), "=a"(t->lo));
}

double ticks_diff(ticks_t* begin, ticks_t* end)
{
	return ((double)((unsigned long)-1 + 1) * (end->hi - begin->hi)
		+ (end->lo - begin->lo));
}

int main()
{
	ticks_t t1, t2;
	rdtsc(&t1);
	printf("hello world!\n");
	rdtsc(&t2);
	printf("hello world consumes %3.f ticks\n", ticks_diff(&t1, &t2));
}

mv ★★★★★
()
Ответ на: комментарий от mv

Не, в первом же ответе посоветовали :)

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.