yse / easy_profiler

Lightweight profiler library for c++
MIT License
2.14k stars 184 forks source link

Ui difference between 2.x and 1.x #118

Open mkwork opened 6 years ago

mkwork commented 6 years ago

That's how shown output of profiler_sample in 2.0.1: default

And that's for 1.3.0: default

Is the 2.x stable now, or 1.3.x should be used in production?

Platform: ubuntu 18.04 x86_64

cas4ey commented 6 years ago

Hi @mkwork

v2.0.1 is stable.
Can you, please, describe your problem? If you mean that you don't see threads and blocks in Diagram window then try to resize histogram (it became vertically resizeable) to make threads and blocks visible.

mkwork commented 6 years ago

Hi. Yep, looks like resizable. But on fhd screen it's hidden by default (may be because of layout settings). And when I try to resize it, 100k events dump, ui hangs more than for 20 minutes.

Did you mean to use something like tracecompass instead of own ui?

cas4ey commented 6 years ago

@mkwork 20 minutes? No way... Do you mean 100k EASY_EVENT blocks? Or by events you mean regular profiled blocks (EASY_BLOCK, EASY_FUNCTION)? Does test.prof dumped by profiler_sample behave in the same manner?

Could you share your dumped prof file for anlysis, please?

mkwork commented 6 years ago

Oh. Looks like I loose this prof file. I've switched to lttng, it looks more suitable for my purposes, and I'm not able to spend more time on this profiling tool.

As you can see on screenshot that's was ~1.5kk of blocks.

As I remember, that's a code snippet produced this dump:

#include <iostream>
#include <thread>
#include <chrono>
#include <easy/profiler.h>

using namespace std::chrono_literals;

void bottom_level(int i) {
    EASY_FUNCTION();
    EASY_BLOCK("sleep");
    std::this_thread::sleep_for(10us);
    EASY_END_BLOCK;
    EASY_BLOCK("output");
    std::cout << "iteration " << i << std::endl;
    EASY_END_BLOCK;
}

void top_level(int iteration) {
    EASY_FUNCTION();
    std::this_thread::sleep_for(1us);
    static const uint64_t bottom_count = 100;
    for (int i = 0; i < bottom_count; i++) {
        bottom_level(iteration);
    }

}

int main(int argc, char* argv[])
{
    EASY_PROFILER_ENABLE;

    static const uint64_t top_count = 1000;
    for (int i = 0; i < top_count; i++) {
        top_level(i);
    }

    profiler::dumpBlocksToFile("profile.prof");

    return 0;
}

Platform: Ubuntu 18.04 x86_64; Qt 5.9; cpu i7-6600U

Otherwise it could be one day of production dump, but I can't share it with you. Sorry for inconvenience.