一度に複数のソースからデータを取得し、それを内部データベース (現在はstd::set
) に格納するサーバー アプリケーションを作成しています。
私はちょうど Microsoft の ConcRT PPL データ構造を見ていて、std::unordered_set
. たとえば、次の 2 つのコード スニペットのパフォーマンスに大きな違いはありますか?
void StdWithMutex( void )
{
std::ofstream outFile( "Test.tmp" );
std::lock_guard<std::mutex> lockGuard( m_mutex );
// Iterate through the data and write it to a file:
// m_setData is of type std::unordered_set<DataType>
for( auto data : m_setData )
{
outFile << data;
}
}
と:
void ConcRT( void )
{
std::ofstream outFile( "Test.tmp" );
// Iterate through the data and write it to a file:
// m_setData is of type concurrency::concurrent_unordered_set
for( auto data : m_setData )
{
outFile << data;
}
}
Moveover、私はしばしばデータを順番に出力する必要があります。そのため、私は現在 ではstd::set
なく を使用してstd::unordered_set
いconcurrency::concurrent_unordered_set
ます。印刷する必要がありますか?