예제 #1
0
파일: timer.cpp 프로젝트: jpilet/polyora
void TaskTimer::printStats() 
{
	CharDoubleMap flatProfile;

	double total=0;

	printf("Tree Profile:\n   Incl-Abs   Incl-%%     Self-Abs   Self-%%      Name\n"); 

#ifdef _OPENMP
	total = printThreadTreeInfo(flatProfile);
#else
	TaskTimer *root = (stack.size()>0 ? stack.front() : 0);

	if (root) {
		total += root->value();
		root->printStats(0, root->value(), flatProfile);
	}
#endif
	
	printf("Flat Profile:\n   Incl-Abs   Incl-%%     Self-Abs   Self-%%      Name\n"); 
	for (CharDoubleMap::iterator it=flatProfile.begin(); it!=flatProfile.end(); ++it) {
		printf("% 10.1fms % 7.2f%%  %10.1fms % 7.2f%% %s\n", 
				it->second.incl, 100.0f*it->second.incl/total, 
				it->second.self, 100.0f*it->second.self/total,
				it->first);
	}
}
예제 #2
0
파일: timer.cpp 프로젝트: jpilet/polyora
void TaskTimer::pushTask(const char *task) {
#ifdef _OPENMP
	TaskStack &stack = thread_stacks[omp_get_thread_num()];
#endif
	if (stack.size() == 0) 
		stack.push_back(new TaskTimer("Other/Idle"));

	stack.push_back(stack.back()->setTask(task));
}
예제 #3
0
파일: timer.cpp 프로젝트: jpilet/polyora
void TaskTimer::popTask()
{
#ifdef _OPENMP
	TaskStack &stack = thread_stacks[omp_get_thread_num()];
#endif
	// it is forbidden to pop Root
	assert(stack.size()>1);
	stack.back()->stop();
	stack.pop_back();
	stack.back()->resume();
}
예제 #4
0
파일: cli.cpp 프로젝트: JASSoft1/opentx
int cliStackInfo(const char ** argv)
{
  int tid = 0;
  if (toInt(argv, 1, &tid) > 0) {
    int available = 0;
    int total = 0;
    switch(tid) {
      case MENU_TASK_INDEX:
        total = menusStack.size();
        available = menusStack.available();
        break;
      case MIXER_TASK_INDEX:
        total = mixerStack.size();
        available = mixerStack.available();
        break;
      case AUDIO_TASK_INDEX:
        total = audioStack.size();
        available = audioStack.available();
        break;
      case CLI_TASK_INDEX:
        total = cliStack.size();
        available = cliStack.available();
        break;
      case MAIN_TASK_INDEX:
        total = stackSize() * 4;
        available = stackAvailable();
        break;
      default:
        break;
    }
    serialPrint("%d available (%d total)", available, total);
  }
  else {
    serialPrint("%s: Invalid argument \"%s\"", argv[0], argv[1]);
  }
  return 0;
}