Home » Community » Coffee corner » Map implementation
Re: Map implementation [message #51558 is a reply to message #51552] |
Tue, 16 April 2019 12:38   |
 |
mirek
Messages: 14257 Registered: November 2005
|
Ultimate Member |
|
|
Novo wrote on Sun, 14 April 2019 18:55
Added 100 elements
Mem used: 2592740 Kb
[/code]
IMHO, it is possible to do much better than this ...
Just for reference (Visual C++ 64 bit release):
#include <Core/Core.h>
#include <set>
#include <vector>
using namespace Upp;
CONSOLE_APP_MAIN
{
int curMU = MemoryUsedKb();
int v_num = 1000000;
std::vector< std::set<int> > v;
Cout() << "sizeof(Index<int>): " << sizeof(Index<int>) << " bytes" << EOL;
Cout() << "Mem used: " << MemoryUsedKb() - curMU << " Kb" << EOL;
v.resize(v_num);
Cout() << "Created " << v_num << " empty Index<int>" << EOL;
Cout() << "Mem used: " << MemoryUsedKb() - curMU << " Kb" << EOL;
const int isize = 100;
for (int i = 0; i < isize; ++i) {
const int jsize = v_num;
for (int j = 0; j < jsize; ++j)
v[j].insert(i);
Cout() << "Added " << i + 1 << " elements" << EOL;
Cout() << "Mem used: " << MemoryUsedKb() - curMU << " Kb" << EOL;
}
}
Added 100 elements
Mem used: 3222476 Kb
Replace set with unorderd_set and
Added 100 elements
Mem used: 12412392 Kb
sizeof(std::unordered_set<int>) = 64
GCC 64bits, unorderd_set
Added 100 elements
Mem used: 4621148 Kb
sizeof(std::unordered_set<int>) = 56
BTW, I am now banging my head about reducing overhead from 20 bytes to 16 per element. It looks like it might not be possible without performance degradation (in all scenarios). So I would say it is really hard to get below 20 per element.
Mirek
[Updated on: Tue, 16 April 2019 12:40] Report message to a moderator
|
|
|
 |
|
Map implementation
|
 |
|
Re: Map implementation
By: mirek on Fri, 22 March 2019 07:18
|
 |
|
Re: Map implementation
By: Novo on Wed, 27 March 2019 03:33
|
 |
|
Re: Map implementation
|
 |
|
Re: Map implementation
By: Novo on Tue, 02 April 2019 17:48
|
 |
|
Re: Map implementation
By: Novo on Tue, 02 April 2019 18:39
|
 |
|
Re: Map implementation
|
 |
|
Re: Map implementation
By: mirek on Mon, 08 April 2019 22:37
|
 |
|
Re: Map implementation
|
 |
|
Re: Map implementation
By: mirek on Tue, 09 April 2019 17:16
|
 |
|
Re: Map implementation
By: mirek on Wed, 10 April 2019 11:07
|
 |
|
Re: Map implementation
|
 |
|
Re: Map implementation
By: Novo on Wed, 10 April 2019 17:09
|
 |
|
Re: Map implementation
By: mirek on Wed, 10 April 2019 17:37
|
 |
|
Re: Map implementation
By: Novo on Sat, 13 April 2019 20:58
|
 |
|
Re: Map implementation
By: Novo on Sat, 13 April 2019 21:07
|
 |
|
Re: Map implementation
By: mirek on Sun, 14 April 2019 08:03
|
 |
|
Re: Map implementation
By: Novo on Sun, 14 April 2019 18:55
|
 |
|
Re: Map implementation
By: mirek on Sun, 14 April 2019 19:52
|
 |
|
Re: Map implementation
By: mirek on Tue, 16 April 2019 12:38
|
 |
|
Re: Map implementation
By: Novo on Tue, 16 April 2019 16:38
|
 |
|
Re: Map implementation
By: mirek on Tue, 16 April 2019 19:33
|
 |
|
Re: Map implementation
By: Novo on Tue, 16 April 2019 22:36
|
 |
|
Re: Map implementation
By: Novo on Wed, 17 April 2019 05:40
|
 |
|
Re: Map implementation
By: mirek on Wed, 17 April 2019 08:54
|
 |
|
Re: Map implementation
By: Novo on Wed, 17 April 2019 16:13
|
 |
|
Re: Map implementation
By: mirek on Wed, 17 April 2019 18:39
|
 |
|
Re: Map implementation
By: mirek on Fri, 07 June 2019 13:58
|
 |
|
Re: Map implementation
By: Novo on Tue, 25 June 2019 15:20
|
 |
|
Re: Map implementation
By: mirek on Wed, 26 June 2019 12:07
|
 |
|
Re: Map implementation
By: Novo on Mon, 01 July 2019 06:26
|
 |
|
Re: Map implementation
By: mirek on Mon, 01 July 2019 17:53
|
 |
|
Re: Map implementation
By: Novo on Sat, 13 April 2019 21:25
|
 |
|
Re: Map implementation
By: Novo on Wed, 10 April 2019 16:13
|
 |
|
Re: Map implementation
By: mirek on Wed, 10 April 2019 17:50
|
 |
|
Re: Map implementation
By: Novo on Wed, 10 April 2019 16:48
|
Goto Forum:
Current Time: Sat May 10 20:54:34 CEST 2025
Total time taken to generate the page: 0.01241 seconds
|