tracy/test/test.cpp

155 lines
3.5 KiB
C++
Raw Normal View History

2017-09-22 17:32:49 +00:00
#include <chrono>
2017-10-03 23:39:43 +00:00
#include <mutex>
2017-09-22 17:32:49 +00:00
#include <thread>
2017-10-16 19:28:38 +00:00
#include "../Tracy.hpp"
2017-09-22 17:32:49 +00:00
#include "../common/TracySystem.hpp"
void TestFunction()
{
for(;;)
{
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
}
}
void ResolutionCheck()
{
for(;;)
{
{
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
}
{
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
}
}
}
2017-09-23 19:37:14 +00:00
void ScopeCheck()
{
for(;;)
{
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
ZoneScoped;
}
}
2017-09-22 17:32:49 +00:00
2017-10-04 13:41:23 +00:00
static TracyLockable( std::mutex, mutex );
2017-10-03 23:39:43 +00:00
void Lock1()
{
for(;;)
{
std::this_thread::sleep_for( std::chrono::milliseconds( 4 ) );
2017-10-04 13:41:23 +00:00
std::lock_guard<LockableBase( std::mutex )> lock( mutex );
2017-10-06 16:15:00 +00:00
LockMark( mutex );
2017-10-03 23:39:43 +00:00
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 4 ) );
}
}
void Lock2()
{
for(;;)
{
std::this_thread::sleep_for( std::chrono::milliseconds( 3 ) );
2017-10-04 13:41:23 +00:00
std::unique_lock<LockableBase( std::mutex )> lock( mutex );
2017-10-06 16:15:00 +00:00
LockMark( mutex );
2017-10-03 23:39:43 +00:00
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 5 ) );
}
}
void Lock3()
{
for(;;)
{
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
std::unique_lock<LockableBase( std::mutex )> lock( mutex );
LockMark( mutex );
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
}
}
2017-10-19 16:57:41 +00:00
void Plot()
{
unsigned char i = 0;
for(;;)
{
for( int j=0; j<1024; j++ )
{
TracyPlot( "Test plot", (int64_t)i++ );
}
std::this_thread::sleep_for( std::chrono::milliseconds( 1 ) );
}
}
2017-10-20 16:30:28 +00:00
void MessageTest()
{
for(;;)
{
TracyMessage( "Tock", 4 );
std::this_thread::sleep_for( std::chrono::milliseconds( 5 ) );
}
}
2017-10-22 13:57:08 +00:00
static int Fibonacci( int n )
{
ZoneScoped;
if( n < 2 ) return n;
return Fibonacci( n-1 ) + Fibonacci( n-2 );
}
void DepthTest()
{
for(;;)
{
std::this_thread::sleep_for( std::chrono::milliseconds( 20 ) );
Fibonacci( 15 );
}
}
2017-09-22 17:32:49 +00:00
int main()
{
auto t1 = std::thread( TestFunction );
auto t2 = std::thread( TestFunction );
auto t3 = std::thread( ResolutionCheck );
2017-09-23 19:37:14 +00:00
auto t4 = std::thread( ScopeCheck );
2017-10-03 23:39:43 +00:00
auto t5 = std::thread( Lock1 );
auto t6 = std::thread( Lock2 );
auto t7 = std::thread( Lock3 );
2017-10-19 16:57:41 +00:00
auto t8 = std::thread( Plot );
auto t9 = std::thread( Plot );
2017-10-20 16:30:28 +00:00
auto t10 = std::thread( MessageTest );
2017-10-22 13:57:08 +00:00
auto t11 = std::thread( DepthTest );
2017-09-22 17:32:49 +00:00
tracy::SetThreadName( t1, "First thread" );
tracy::SetThreadName( t2, "Second thread" );
tracy::SetThreadName( t3, "Resolution check" );
2017-09-23 19:37:14 +00:00
tracy::SetThreadName( t4, "Scope check" );
2017-10-03 23:39:43 +00:00
tracy::SetThreadName( t5, "Lock 1" );
tracy::SetThreadName( t6, "Lock 2" );
tracy::SetThreadName( t7, "Lock 3" );
2017-10-19 16:57:41 +00:00
tracy::SetThreadName( t8, "Plot 1" );
tracy::SetThreadName( t9, "Plot 2" );
2017-10-20 16:30:28 +00:00
tracy::SetThreadName( t10, "Message test" );
2017-10-22 13:57:08 +00:00
tracy::SetThreadName( t11, "Depth test" );
2017-09-22 17:32:49 +00:00
for(;;)
{
2017-10-20 16:30:28 +00:00
TracyMessageL( "Tick" );
2017-09-22 17:32:49 +00:00
std::this_thread::sleep_for( std::chrono::milliseconds( 2 ) );
{
ZoneScoped;
std::this_thread::sleep_for( std::chrono::milliseconds( 2 ) );
}
FrameMark;
}
}