我正在编写一个服务器应用程序,它一次从多个来源获取数据并将其存储在它的内部数据库中(目前是一个std::set
)。
我刚刚查看了 Microsoft 的 ConcRT PPL 数据结构,想知道它们的效率与在std::unordered_set
. 例如,两个代码片段之间是否存在很大的性能差异:
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;
}
}
此外,我经常需要按顺序打印数据,这就是我目前使用的原因std::set
,而不是std::unordered_set
,所以如果使用 有增益,concurrency::concurrent_unordered_set
潜在的性能增益是否会接近每次重新排序数据的成本需要打印吗?