本文整理汇总了C++中Timer::GetElapsed方法的典型用法代码示例。如果您正苦于以下问题:C++ Timer::GetElapsed方法的具体用法?C++ Timer::GetElapsed怎么用?C++ Timer::GetElapsed使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Timer
的用法示例。
在下文中一共展示了Timer::GetElapsed方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TestFunction_Speed
// TestFunction_Speed
//------------------------------------------------------------------------------
void TestProjectGeneration::TestFunction_Speed() const
{
VSProjectGenerator pg;
AStackString<> baseDir( "C:\\Windows\\System32" );
Array< AString > baseDirs;
baseDirs.Append( baseDir );
// project name
pg.SetProjectName( AStackString<>( "Big" ) );
pg.SetBasePaths( baseDirs );
// platforms
Array< VSProjectConfig > configs;
VSProjectConfig cfg;
cfg.m_Platform = "Win32";
cfg.m_Config = "Debug";
configs.Append( cfg );
// files (about 5,000)
Array< AString > files;
FileIO::GetFiles( baseDir, AStackString<>( "*.mui" ), true, &files );
FileIO::GetFiles( baseDir, AStackString<>( "*.exe" ), true, &files );
FileIO::GetFiles( baseDir, AStackString<>( "*.dll" ), true, &files );
pg.AddFiles( files );
Array< VSProjectFileType > fileTypes;
{
VSProjectFileType ft;
ft.m_FileType = "CppForm";
ft.m_Pattern = "Code\\Forms\\*.h";
fileTypes.Append( ft );
ft.m_FileType = "CppControl";
ft.m_Pattern = "Controls\\*.h";
fileTypes.Append( ft );
}
AStackString<> projectFileName( "C:\\Windows\\System\\dummy.vcxproj" );
{
Timer t;
pg.GenerateVCXProj( projectFileName, configs, fileTypes );
float time = t.GetElapsed();
OUTPUT( "Gen vcxproj : %2.3fs\n", time );
}
{
Timer t;
pg.GenerateVCXProjFilters( projectFileName );
float time = t.GetElapsed();
OUTPUT( "Gen vcxproj.filters: %2.3fs\n", time );
}
}
示例2: TestMSVCPreprocessedOutput
REGISTER_TESTS_END
// TestMSVCPreprocessedOutput
//------------------------------------------------------------------------------
void TestIncludeParser::TestMSVCPreprocessedOutput() const
{
FileStream f;
TEST_ASSERT( f.Open( "Data/TestIncludeParser/fbuildcore.msvc.ii", FileStream::READ_ONLY) )
const size_t fileSize = (size_t)f.GetFileSize();
AutoPtr< char > mem( (char *)ALLOC( fileSize + 1 ) );
TEST_ASSERT( f.Read( mem.Get(), fileSize ) == fileSize );
mem.Get()[ fileSize ] = 0;
Timer t;
const size_t repeatCount( 100 );
for ( size_t i=0; i<repeatCount; ++i )
{
CIncludeParser parser;
TEST_ASSERT( parser.ParseMSCL_Preprocessed( mem.Get(), fileSize ) );
// check number of includes found to prevent future regressions
const Array< AString > & includes = parser.GetIncludes();
TEST_ASSERT( includes.GetSize() == 284 );
#ifdef DEBUG
TEST_ASSERT( parser.GetNonUniqueCount() == 381 );
#endif
}
float time = t.GetElapsed();
OUTPUT( "MSVC : %2.3fs (%2.1f MiB/sec)\n", time, ( (float)( fileSize * repeatCount / ( 1024.0f * 1024.0f ) ) / time ) );
}
示例3: TestClangMSExtensionsPreprocessedOutput
// TestClangMSExtensionsPreprocessedOutput
//------------------------------------------------------------------------------
void TestIncludeParser::TestClangMSExtensionsPreprocessedOutput() const
{
FBuild fBuild; // needed fer CleanPath for relative dirs
FileStream f;
TEST_ASSERT( f.Open( "Data/TestIncludeParser/fbuildcore.clang.ms-extensions.ii", FileStream::READ_ONLY) )
const size_t fileSize = (size_t)f.GetFileSize();
AutoPtr< char > mem( (char *)ALLOC( fileSize + 1 ) );
TEST_ASSERT( f.Read( mem.Get(), fileSize ) == fileSize );
mem.Get()[ fileSize ] = 0;
Timer t;
const size_t repeatCount( 100 );
for ( size_t i=0; i<repeatCount; ++i )
{
CIncludeParser parser;
TEST_ASSERT( parser.ParseGCC_Preprocessed( mem.Get(), fileSize ) );
// check number of includes found to prevent future regressions
const Array< AString > & includes = parser.GetIncludes();
TEST_ASSERT( includes.GetSize() == 285 );
#ifdef DEBUG
TEST_ASSERT( parser.GetNonUniqueCount() == 4758 );
#endif
}
float time = t.GetElapsed();
OUTPUT( "Clang (ms-extensions): %2.3fs (%2.1f MiB/sec)\n", time, ( (float)( fileSize * repeatCount / ( 1024.0f * 1024.0f ) ) / time ) );
}
示例4: WinMain
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow)
{
if (!init_log(NULL))
return -1;
if(!Init(NULL, hInstance, hPrevInstance, pScmdline, iCmdshow))
{
return 1;
}
MSG msg = {0};
while(WM_QUIT != msg.message)
{
if(PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
//no messages waiting, step the simulation forward a frame
if(time.Tick())
{
Update(time.GetElapsed());
Render();
}
}
}
// return this part of the WM_QUIT message to Windows
return msg.wParam;
}
示例5: while
/*static*/ void FileIO::WorkAroundForWindowsFilePermissionProblem( const AString & fileName )
{
// Sometimes after closing a file, subsequent operations on that file will
// fail. For example, trying to set the file time, or even another process
// opening the file.
//
// This seems to be a known issue in windows, with multiple potential causes
// like Virus scanners and possibly the behaviour of the kernel itself.
//
// A work-around for this problem is to attempt to open a file we just closed.
// This will sometimes fail, but if we retry until it succeeds, we avoid the
// problem on the subsequent operation.
FileStream f;
Timer timer;
while ( f.Open( fileName.Get() ) == false )
{
Thread::Sleep( 1 );
// timeout so we don't get stuck in here forever
if ( timer.GetElapsed() > 1.0f )
{
ASSERT( false && "WorkAroundForWindowsFilePermissionProblem Failed!" );
return;
}
}
f.Close();
}
示例6: allocs
// AllocateFromSystemAllocator
//------------------------------------------------------------------------------
/*static*/ float TestSmallBlockAllocator::AllocateFromSystemAllocator( const Array< uint32_t > & allocSizes, const uint32_t repeatCount )
{
const size_t numAllocs = allocSizes.GetSize();
Array< void * > allocs( numAllocs, false );
Timer timer;
for ( size_t r=0; r<repeatCount; ++r )
{
// use malloc
for ( uint32_t i=0; i<numAllocs; ++i )
{
uint32_t * mem = (uint32_t *)malloc( allocSizes[i] );
allocs.Append( mem );
}
// use free
for ( uint32_t i=0; i<numAllocs; ++i )
{
void * mem = allocs[ i ];
free( mem );
}
allocs.Clear();
}
return timer.GetElapsed();
}
示例7: LaunchSubProcess
int LaunchSubProcess( const AString & args )
{
// try to make a copy of our exe
AStackString<> exeName;
Env::GetExePath( exeName );
AStackString<> exeNameCopy( exeName );
exeNameCopy += ".copy";
Timer t;
while ( FileIO::FileCopy( exeName.Get(), exeNameCopy.Get() ) == false )
{
if ( t.GetElapsed() > 5.0f )
{
AStackString<> msg;
msg.Format( "Failed to make sub-process copy - error: %u (0x%x)\n\nSrc: %s\nDst: %s\n", Env::GetLastErr(), Env::GetLastErr(), exeName.Get(), exeNameCopy.Get() );
ShowMsgBox( msg.Get() );
return -2;
}
Thread::Sleep( 100 );
}
AStackString<> argsCopy( args );
argsCopy += " -subprocess";
// allow subprocess to access the mutex
g_OneProcessMutex.Unlock();
Process p;
#if defined( __WINDOWS__ )
p.DisableHandleRedirection(); // TODO:MAC TODO:LINUX is this needed?
#endif
p.Spawn( exeNameCopy.Get(), argsCopy.Get(), nullptr, nullptr );
p.Detach();
return 0;
}
示例8: Validate
REGISTER_TESTS_END
// Validate
//------------------------------------------------------------------------------
void TestTimer::Validate() const
{
Timer t;
t.Start();
const uint64_t before = t.GetNow();
Thread::Sleep( 100 ); // sleep for 100ms
const float elapsed = t.GetElapsed();
const float elapsedMS = t.GetElapsedMS();
const uint64_t after = t.GetNow();
// some time must have elapsed
TEST_ASSERT( after > before );
// sanity check
TEST_ASSERT( elapsed >= 0.001f ); // at least 1ms
TEST_ASSERT( elapsed < 1.000f ); // some sensible value
// sanity check
TEST_ASSERT( elapsedMS >= 1.0f ); // at least 1ms
TEST_ASSERT( elapsedMS < 1000.0f ); // some sensible value
}
示例9: Advance
//------------------------------------------------------------------------------
void Solver::Advance (float timeStep)
{
Timer t;
t.Start();
updateBlendValues();
mFluidHashTable[LOW]->Fill(mFluidParticles[LOW]->ActiveIDs);
mFluidHashTable[HIGH]->Fill(mFluidParticles[HIGH]->ActiveIDs);
computeDensity(LOW);
computeDensity(HIGH);
computeAcceleration(LOW);
computeAcceleration(HIGH);
integrate(HIGH, timeStep/2.0f);
mFluidHashTable[HIGH]->Fill(mFluidParticles[HIGH]->ActiveIDs);
computeDensity(HIGH);
computeAcceleration(HIGH);
integrate(HIGH, timeStep/2.0f);
integrate(LOW, timeStep);
inject();
t.Stop();
std::cout << "#LOW " << mFluidParticles[LOW]->ActiveIDs.size() << " #HIGH "
<< mFluidParticles[HIGH]->ActiveIDs.size() << " #TOTAL: "
<< mFluidParticles[LOW]->ActiveIDs.size() +
mFluidParticles[HIGH]->ActiveIDs.size() << "TIME: "
<< t.GetElapsed() << std::endl;
}
示例10: Generate
// Generate
//------------------------------------------------------------------------------
void Report::Generate( const FBuildStats & stats )
{
Timer t;
// pre-allocate a large string for output
m_Output.SetReserved( MEGABYTE );
m_Output.SetLength( 0 );
// generate some common data used in reporting
GetLibraryStats( stats );
// build the report
CreateHeader();
CreateTitle();
CreateOverview( stats );
DoCPUTimeByType( stats );
DoCacheStats( stats );
DoCPUTimeByLibrary();
DoCPUTimeByItem( stats );
DoIncludes();
CreateFooter();
// patch in time take
const float time = t.GetElapsed();
AStackString<> timeTakenBuffer;
stats.FormatTime( time, timeTakenBuffer );
char * placeholder = m_Output.Find( "^^^^ " );
memcpy( placeholder, timeTakenBuffer.Get(), timeTakenBuffer.GetLength() );
}
示例11: Period
bool Timer::Period(Timer& T, double* t, double period) {
if (T.GetElapsed() - *t > 0) {
*t += period;
return true;
}
return false;
}
示例12: WaitTimeout
// WaitTimeout
//------------------------------------------------------------------------------
void TestSemaphore::WaitTimeout() const
{
Timer t;
Semaphore s;
s.Wait( 50 ); // wait 50ms
// ensure some sensible time has elapsed
ASSERT( t.GetElapsed() > 0.025f ); // 25ms (allow wide margin of error)
}
示例13: main
//.........这里部分代码省略.........
// Note the algorithm from SIGGRAPH 2007 (v2.0) is very fast but produces less quality results especially for the
// overdraw optimization. During our experiments with some medium size models, we saw an improvement of 1000x in
// running time (from 20+ minutes to less than 1 second) for using v2.0 calls vs v1.2 calls. The resulting vertex
// cache optimization is very similar while the overdraw optimization drops from 3.8x better to 2.5x improvement over
// the input mesh.
// Developers should always run the overdraw optimization using the fast algorithm from SIGGRAPH initially.
// If they require a better result, then re-run the overdraw optimization using the old v1.2 path (TOOTLE_OVERDRAW_AUTO).
// Passing TOOTLE_OVERDRAW_AUTO to the algorithm will let the algorithm choose between Direct3D or raytracing path
// depending on the total number of clusters (less than 200 clusters, it will use Direct3D path otherwise it will
// use raytracing path since the raytracing path will be faster than the Direct3D path at that point).
//
// Tips: use v2.0 for fast optimization, and v1.2 to further improve the result by mix-matching the calls.
// **********************************************************************************************************************
switch (settings.algorithmChoice)
{
case TOOTLE_VCACHE_ONLY:
// *******************************************************************************************************************
// Perform Vertex Cache Optimization ONLY
// *******************************************************************************************************************
stats.nClusters = 1;
// Optimize vertex cache
result = TootleOptimizeVCache(pnIB, nFaces, nVertices, settings.nCacheSize,
pnIB, NULL, settings.eVCacheOptimizer);
if (result != TOOTLE_OK)
{
DisplayTootleErrorMessage(result);
return 1;
}
stats.fOptimizeVCacheTime = timer.GetElapsed();
break;
case TOOTLE_CLUSTER_VCACHE_OVERDRAW:
// *******************************************************************************************************************
// An example of calling clustermesh, vcacheclusters and optimize overdraw individually.
// This case demonstrate mix-matching v1.2 clustering with v2.0 overdraw optimization.
// *******************************************************************************************************************
// Cluster the mesh, and sort faces by cluster.
result = TootleClusterMesh(pfVB, pnIB, nVertices, nFaces, nStride, settings.nClustering, pnIB, &faceClusters[0], NULL);
if (result != TOOTLE_OK)
{
DisplayTootleErrorMessage(result);
return 1;
}
stats.fClusterMeshTime = timer.GetElapsed();
timer.Reset();
// The last entry of of faceClusters store the total number of clusters.
stats.nClusters = faceClusters[ nFaces ];
// Perform vertex cache optimization on the clustered mesh.
result = TootleVCacheClusters(pnIB, nFaces, nVertices, settings.nCacheSize, &faceClusters[0],
pnIB, NULL, settings.eVCacheOptimizer);
if (result != TOOTLE_OK)
{
DisplayTootleErrorMessage(result);
return 1;
}
示例14: CompareHashTimes_Small
// CompareHashTimes_Small
//------------------------------------------------------------------------------
void TestHash::CompareHashTimes_Small() const
{
// some different strings to hash
Array< AString > strings( 32, true );
strings.Append( AString( " " ) );
strings.Append( AString( "short" ) );
strings.Append( AString( "mediumstringmediumstring123456789" ) );
strings.Append( AString( "longstring_98274ncoif834jodhiorhmwe8r8wy48on87h8mhwejrijrdierwurd9j,8chm8hiuorciwriowjri" ) );
strings.Append( AString( "c:\\files\\subdir\\project\\thing\\stuff.cpp" ) );
const size_t numStrings = strings.GetSize();
const size_t numIterations = 102400;
// calc datasize
size_t dataSize( 0 );
for ( size_t i=0; i<numStrings; ++i )
{
dataSize += strings[ i ].GetLength();
}
dataSize *= numIterations;
// xxHash - 32
{
Timer t;
uint32_t crc( 0 );
for ( size_t j=0; j<numIterations; ++j )
{
for ( size_t i=0; i<numStrings; ++i )
{
crc += xxHash::Calc32( strings[ i ].Get(), strings[ i ].GetLength() );
}
}
float time = t.GetElapsed();
float speed = ( (float)dataSize / (float)( 1024 * 1024 * 1024 ) ) / time;
OUTPUT( "xxHash-32 : %2.3fs @ %6.3f GiB/s (hash: 0x%x)\n", time, speed, crc );
}
// xxHash - 64
{
Timer t;
uint64_t crc( 0 );
for ( size_t j=0; j<numIterations; ++j )
{
for ( size_t i=0; i<numStrings; ++i )
{
crc += xxHash::Calc64( strings[ i ].Get(), strings[ i ].GetLength() );
}
}
float time = t.GetElapsed();
float speed = ( (float)dataSize / (float)( 1024 * 1024 * 1024 ) ) / time;
OUTPUT( "xxHash-64 : %2.3fs @ %6.3f GiB/s (hash: %016llx)\n", time, speed, crc );
}
// Murmur3 - 32
{
Timer t;
uint32_t crc( 0 );
for ( size_t j=0; j<numIterations; ++j )
{
for ( size_t i=0; i<numStrings; ++i )
{
crc += Murmur3::Calc32( strings[ i ].Get(), strings[ i ].GetLength() );
}
}
float time = t.GetElapsed();
float speed = ( (float)dataSize / (float)( 1024 * 1024 * 1024 ) ) / time;
OUTPUT( "Murmur3-32 : %2.3fs @ %6.3f GiB/s (hash: 0x%x)\n", time, speed, crc );
}
// Murmur3 - 128
{
Timer t;
uint64_t hashB( 0 );
uint64_t hashA( 0 );
for ( size_t j=0; j<numIterations; ++j )
{
for ( size_t i=0; i<numStrings; ++i )
{
hashA += Murmur3::Calc128( strings[ i ].Get(), strings[ i ].GetLength(), hashB );
}
}
float time = t.GetElapsed();
float speed = ( (float)dataSize / (float)( 1024 * 1024 * 1024 ) ) / time;
OUTPUT( "Murmur3-128 : %2.3fs @ %6.3f GiB/s (%016llx, %016llx)\n", time, speed, hashA, hashB );
}
// CRC32 - 8x8 slicing
{
Timer t;
uint32_t crc( 0 );
for ( size_t j=0; j<numIterations; ++j )
{
for ( size_t i=0; i<numStrings; ++i )
{
crc += CRC32::Calc( strings[ i ].Get(), strings[ i ].GetLength() );
}
}
float time = t.GetElapsed();
float speed = ( (float)dataSize / (float)( 1024 * 1024 * 1024 ) ) / time;
//.........这里部分代码省略.........
示例15: main
int main(int argc, char *argv[])
{
TestStructs();
#ifdef _CELL
InitPPECallbacks();
InitSPEs();
#endif
Init();
if(parseArgs(argc, argv) != 0) return 1;
/* Init framebuffer and Scene */
printf("lzrt %ix%i (" ARCH_STR ")\n", args.width, args.height);
ImageBuffer *imgbuf = new FrameBuffer(args.width, args.height, args.fullscreen, "lzrt %ix%i (" ARCH_STR ")", args.width, args.height);
Scene scene(imgbuf, args.animate, args.renderer);
// Execute Lua script which sets up the scene
lua_State *L = 0;
L = InitLua();
if(lua_dofile(L, args.luascript) != 0)
{
printf("Error: Couldn't execute Lua script '%s'\n", args.luascript);
lua_close(L);
return 1;
}
threadpool = new ThreadPool(args.nthreads);
// Setup Scene
scene.Setup(threadpool);
scene.imgbuf->SetClearColor(0.2f, 0.2f, 0.3f);
//scene.imgbuf->SetClearColor(1.0f, 1.0f, 1.0f);
Timer timer;
while(run)
{
SDLevent();
threadpool->SetNumThreads(args.nthreads);
timer.Mark();
// Call Lua loop function
if(L != 0 && scene.animate) call_function<void>(L, "lzrtloop");
scene.camera->Move(firstframe, camerapos.x, camerapos.y, camerapos.z);
scene.imgbuf->Clear();
scene.Render(threadpool, args.njobs);
args.njobs = scene.njobs;
rendertime = timer.GetElapsed();
PrintStats(imgbuf, &scene);
if(scene.animate || firstframe) frame++;
imgbuf->Update();
firstframe = false;
}
}