mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
HashTbl avoid backward search in erase()
- The ideas as discussed in email - The speedup is really there. Before loop 0 - Erased 100000 elements: 3.82 s loop 1 - Erased 100000 elements: 11.45 s loop 2 - Erased 100000 elements: 19.46 s loop 3 - Erased 100000 elements: 27.73 s loop 4 - Erased 100000 elements: 38.74 s ^C After loop 0 - Erased 100000 elements (size 2900000 capacity 8388608) 0.01 s loop 1 - Erased 100000 elements (size 2800000 capacity 8388608) 0 s loop 2 - Erased 100000 elements (size 2700000 capacity 8388608) 0.01 s loop 3 - Erased 100000 elements (size 2600000 capacity 8388608) 0 s loop 4 - Erased 100000 elements (size 2500000 capacity 8388608) 0 s loop 5 - Erased 100000 elements (size 2400000 capacity 8388608) 0 s loop 6 - Erased 100000 elements (size 2300000 capacity 8388608) 0 s loop 7 - Erased 100000 elements (size 2200000 capacity 8388608) 0 s ...
This commit is contained in:
@ -56,15 +56,16 @@ int main(int argc, char *argv[])
|
||||
HashTbl<label, label, Hash<label> > map(2 * nSize);
|
||||
|
||||
Info<< "Constructed map of size: " << nSize
|
||||
<< " (size " << map.size() << " capacity " << map.capacity() << ") "
|
||||
<< " " << timer.cpuTimeIncrement() << " s\n\n";
|
||||
|
||||
for (label i = 0; i < nSize; i++)
|
||||
{
|
||||
map.insert(i, i);
|
||||
}
|
||||
Info<< "Inserted " << nSize << " elements: "
|
||||
<< timer.cpuTimeIncrement() << " s\n\n";
|
||||
|
||||
Info<< "Inserted " << nSize << " elements"
|
||||
<< " (size " << map.size() << " capacity " << map.capacity() << ") "
|
||||
<< timer.cpuTimeIncrement() << " s\n";
|
||||
|
||||
label elemI = 0;
|
||||
for (label iLoop = 0; iLoop < nLoops; iLoop++)
|
||||
@ -73,8 +74,9 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
map.erase(elemI++);
|
||||
}
|
||||
Info<< "loop " << iLoop << " - Erased " << nBase << " elements: "
|
||||
<< " " << timer.cpuTimeIncrement() << " s\n";
|
||||
Info<< "loop " << iLoop << " - Erased " << nBase << " elements"
|
||||
<< " (size " << map.size() << " capacity " << map.capacity() << ") "
|
||||
<< timer.cpuTimeIncrement() << " s\n";
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user