Example #1
0
void DisplayProfile(sf::RenderWindow * renderWindow, CProfileIterator * iter, int x, int & y)
{
    if (!renderWindow) return;
    FontManager * fontManager = FontManager::Get();

    y += 15;
    while ( !iter->Is_Done() )
    {
        sf::Text text("", *fontManager->GetFont(""));
        text.setCharacterSize(12);
        ostringstream texte;
        if ( CProfileManager::Get_Frame_Count_Since_Reset() != 0 )
            texte << fixed <<  iter->Get_Current_Name()   << " Calls/Frame:" << iter->Get_Current_Total_Calls()/CProfileManager::Get_Frame_Count_Since_Reset()
                                                << " Time/Frame:" << iter->Get_Current_Total_Time()/CProfileManager::Get_Frame_Count_Since_Reset()
                                                << " %Time/Parent " << iter->Get_Current_Total_Time()/iter->Get_Current_Parent_Total_Time()*100.0f;
        text.setString(texte.str());
        text.setPosition(x,y);
        renderWindow->draw(text);

        //Childs
        CProfileIterator * childIter = CProfileManager::Get_Iterator();
        *childIter = *iter;
        childIter->Enter_Child(0);
        DisplayProfile(renderWindow, childIter, x+15, y);
        CProfileManager::Release_Iterator(childIter);

        y += 15;
        iter->Next();
    }
}
Example #2
0
void CProfileInfo::SetProfileInfo()
{
	CProfileIterator* it = CProfileManager::Get_Iterator();
	
	float fTotal = 0.0f;
	while( !it->Is_Done() )
	{
		fTotal += it->Get_Current_Total_Time();
		it->Next();
	}
	it->First();

	Clear();
	m_vecstrProfileInfo.push_back( "Root" );
	char szTab[64], szTemp[4096];
	while( !it->Is_Done() )
	{
		memset( szTab, 0, sizeof(szTab) );
		for( DWORD i=0; i<it->GetPreOrderDepth(); i++ )
			strcat( szTab, PROFILE_TAB_STR );
		sprintf( szTemp, "%s---> %.2f%%  %s,  <%.3f ms>,  <%d calls>,  <%f ms/call>", szTab, (it->Get_Current_Total_Time() / fTotal) * 100, 
						it->Get_Current_Name(), it->Get_Current_Total_Time() * 1000, it->Get_Current_Total_Calls(),
						(it->Get_Current_Total_Time() * 1000) / (it->Get_Current_Total_Calls() ? it->Get_Current_Total_Calls() : 1));
		m_vecstrProfileInfo.push_back( szTemp );
		it->NextPreOrder();
	}

	CProfileManager::Release_Iterator( it );
	Reset();

	if( fTotal * 1000 > SEC( 1 ) )	// 1초이상 지연되면 로그 남김
		FileOut( "..\\profile.txt" );
}
Example #3
0
void	DumpSimulationTime(FILE* f)
{
	CProfileIterator* profileIterator = CProfileManager::Get_Iterator();

	profileIterator->First();
	if (profileIterator->Is_Done())
		return;

	float accumulated_time=0,parent_time = profileIterator->Is_Root() ? CProfileManager::Get_Time_Since_Reset() : profileIterator->Get_Current_Parent_Total_Time();
	int i;
	int frames_since_reset = CProfileManager::Get_Frame_Count_Since_Reset();
	
	//fprintf(f,"%.3f,",	parent_time );
	float totalTime = 0.f;

	
	
	static bool headersOnce = true;
	
	if (headersOnce)
	{
		headersOnce = false;
		fprintf(f,"total (%dx%dx%d interop=%d),",NUM_OBJECTS_X,NUM_OBJECTS_Y,NUM_OBJECTS_Z,useInterop);

			for (i = 0; !profileIterator->Is_Done(); i++,profileIterator->Next())
		{
			float current_total_time = profileIterator->Get_Current_Total_Time();
			accumulated_time += current_total_time;
			float fraction = parent_time > SIMD_EPSILON ? (current_total_time / parent_time) * 100 : 0.f;
			const char* name = profileIterator->Get_Current_Name();
			fprintf(f,"%s,",name);
		}
		fprintf(f,"\n");
	}
	
	
	fprintf(f,"%.3f,",parent_time);
	profileIterator->First();
	for (i = 0; !profileIterator->Is_Done(); i++,profileIterator->Next())
	{
		float current_total_time = profileIterator->Get_Current_Total_Time();
		accumulated_time += current_total_time;
		float fraction = parent_time > SIMD_EPSILON ? (current_total_time / parent_time) * 100 : 0.f;
		const char* name = profileIterator->Get_Current_Name();
		//if (!strcmp(name,"stepSimulation"))
		{
			fprintf(f,"%.3f,",current_total_time);
		}
		totalTime += current_total_time;
		//recurse into children
	}

	fprintf(f,"\n");
	
	
	CProfileManager::Release_Iterator(profileIterator);


}