// Useful for assessing the performance of environment variable substitutions. void GafferTest::testManyEnvironmentSubstitutions() { ContextPtr context = new Context(); const std::string phrase( "${GAFFER_ROOT}" ); const std::string expectedResult( getenv( "GAFFER_ROOT") ); Timer t; for( int i = 0; i < 1000000; ++i ) { const std::string s = context->substitute( phrase ); GAFFERTEST_ASSERT( s == expectedResult ); } // uncomment to get timing information //std::cerr << t.stop() << std::endl; }
// Useful for assessing the performance of substitutions. void GafferTest::testManySubstitutions() { ContextPtr context = new Context(); context->set( "foodType", std::string( "kipper" ) ); context->set( "cookingMethod", std::string( "smoke" ) ); const std::string phrase( "${cookingMethod} me a ${foodType}" ); const std::string expectedResult( "smoke me a kipper" ); Timer t; for( int i = 0; i < 100000; ++i ) { const std::string s = context->substitute( phrase ); GAFFERTEST_ASSERT( s == expectedResult ); } // uncomment to get timing information //std::cerr << t.stop() << std::endl; }
void SceneWriter::executeSequence( const std::vector<float> &frames ) const { const ScenePlug *scene = inPlug()->getInput<ScenePlug>(); if( !scene ) { throw IECore::Exception( "No input scene" ); } ContextPtr context = new Context( *Context::current(), Context::Borrowed ); Context::Scope scopedContext( context.get() ); std::string fileName = context->substitute( fileNamePlug()->getValue() ); createDirectories( fileName ); SceneInterfacePtr output = SceneInterface::create( fileName, IndexedIO::Write ); for ( std::vector<float>::const_iterator it = frames.begin(); it != frames.end(); ++it ) { context->setFrame( *it ); double time = *it / g_frameRate; writeLocation( scene, ScenePlug::ScenePath(), context.get(), output.get(), time ); } }