воскресенье, 9 декабря 2012 г.

Сам себе профайлер (сниппет)

Нужно измерить производительность программы ? ищешь тормоза в коде ? интерфейс замерзает ?

Хороший профайлер и трезвая голова - помогает.
Но иногда 1-го пункта может не оказаться: или под нужную платформу или под рукой или он дорогой.

Тогда мне помогает пункт 2-й и небольшой сниппет

#include <time.h>

clock_t cl = clock();

// some code

std::cout << "Code duration: " << (double) ( clock() - cl ) / ( CLOCKS_PER_SEC / 1000 ) << " ms" << std::endl;

Сам по себе вызов метода clock() деградации производительности почти не вызывает, я смело использую модифицированную версию в циклах и функциях. Но работа с консолью и строками - операция не быстрая.

Увлекательно, но метод заставляет думать, а не наблюдать :) иногда это бывает полезнее, коллегам понравился... может быть понравится и тебе.

Со временем, начинаешь понимать сколько должна длиться та или иная операция. За сколько времени обрабатывается гигабайт информации и за сколько времени он может обработаться. Приходит понимание времени и осознания масштабов миллисекунд и тактов. I like it.