Index: trunk/src/core/profiler.cc
===================================================================
--- trunk/src/core/profiler.cc	(revision 406)
+++ trunk/src/core/profiler.cc	(revision 409)
@@ -20,5 +20,5 @@
 profiler::profiler()
 {
-	m_root = new node( "root", nullptr );
+	m_root = new node( "root"_hls64, nullptr );
 	m_root->start();
 	m_current = m_root;
@@ -30,9 +30,9 @@
 }
 
-void profiler::start_profile( const string_view& tag )
+void profiler::start_profile( string_type&& tag )
 {
 	if ( tag != m_current->m_tag )
 	{
-		m_current = m_current->request_child( tag );
+		m_current = m_current->request_child( ::nv::move( tag ) );
 	}
 	m_current->start();
@@ -47,6 +47,6 @@
 }
 
-profiler::node::node( const string_view& tag, node* parent )
-	: m_tag( tag.to_string() )
+profiler::node::node( string_view tag, node* parent )
+	: m_tag( ::nv::move( tag ) )
 	, m_parent( parent )
 	, m_recusion( 0 )
@@ -58,8 +58,7 @@
 }
 
-profiler::node* profiler::node::request_child( const string_view& tag )
+profiler::node* profiler::node::request_child( string_type&& tag )
 {
-	std::string stag( tag.to_string() );
-	auto it = m_children.find( stag );
+	auto it = m_children.find( tag );
 	if ( it != m_children.end() ) 
 		return it->second;
@@ -67,5 +66,5 @@
 	{
 		node* result = new node( tag, this );
-		m_children[ stag ] = result;
+		m_children.assign( ::nv::move( tag ), result );
 		return result;
 	}
@@ -131,5 +130,5 @@
 			if ( indent > 0 ) nvmemset( buffer, '-', indent );
 			snprintf( buffer + indent, 128 - indent, "%*.*s %6.2f %6d %9.2f %6.2f", indent - 23, 23 - indent,
-				c->m_tag.c_str(), pparent, calls, total_ms, avg_ms );
+				c->m_tag.data(), pparent, calls, total_ms, avg_ms );
 			NV_LOG_INFO( string_view( buffer, nvstrlen( buffer ) ) );
 			if ( c->m_children.size() > 0 )
