

               ;'.
             ,+  .+
             +  +;:;
            ,+:;@; +
            ,+ ;;;.+
       +;+`  +;   +'  '+:,
      +;;,+  ;+++++  :+ ;
      +;;,+   `++;   ++`;..
      +` ++     +    ;++ +
       +++.    :+     +++;
         +   ,++++;`  .:
    '+`  ++++++++++++++   ++;
   .:++  ++++++++++++++:  ++;
   .'+' ++++++`   :+++++` ++.
     '`'++++        .++++ +.
      ++++'   :;;;.   ++++:
      ++++  `,;;;;;;  `+++;
      +++  ,  ;;;;;;;  ++++
     '+++  ;  '@@@;;;;  +++
     +++. :;;;@@@@@;;;  +++`
     +++  ;;;@@@@@@+;;  +++,
     +++  ;;;@@@@@@+;;  +++:
     +++. ;;;'@@@@@;;;  +++,
     ++++  ;;;@@@@';;;  +++
     :+++  ;;;;;;;;;;  '+++
      +++'  ;;;;;;;;.  ++++
      ++++,  .;;;;;   ++++
       ++++'         ++++'
        +++++:    `++++++
        `+++++++++++++++
          ++++++++++++:
           `++++++++;


EFL Profiling Viewer

EFL Profiling Viewer - developer application for graphical view and analyze
log-files, that was created by efl_debug. Main feature - visualisation the
program workflow. That can be useful for debugging and "bottleneck" seeking.
The EFL Profiling Viewer provide elements for easy navigation through log-file
and investigate any time interval.

Requirements:

  efl (1.18 +)
  libunwind


Compiling:

1. mkdir build
2. cd build
3. cmake -DCMAKE_INSTALL_PREFIX=/your_install_path ..
4. make
5. (sudo) make install


Prepare your app to logging:

Markup the exploring source code with eina_evlog marks.
eina_evlog(const char *event, void *obj, double srctime, const char *detail);

Function eina_evlog() stores time when it have been called. So it can be useful
fill marks right before and right after code you interesting in.

More info about event types and using eina_evlog can be found here:
https://docs.enlightenment.org/auto/group__Eina__Evlog.html

* Note: it will be good if every logged event will have start and finish.


Create log file:

1. efl_debugd
2. efl_debug list  : shows id of all processes that can be connected to
efl debug daemon. Choose yours.
3. efl_debug evlogon <pid>  : starts logging process with <pid>.
4. efl_debug evlogoff <pid> : end logging and overwrite file ~/efl_debug_evlog-<pid>.log

If you have upstream efl, 3-4 step changed:
3. efl_debug evlogon <pid> <time> : log your application for <time> seconds.
4. efl_debug evlogoff <pid> : if you need to end logging before the appointed time.

Display log:

efl_profiling_viewer
File->Open->Choose log-file in dialog window.
