Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » Coffee corner » Map implementation
Re: Map implementation [message #51558 is a reply to message #51552] Tue, 16 April 2019 12:38 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 13975
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

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: [Skylark][witz] How would you do this
Next Topic: [SOLVED]Sharing Ptr of object to dll
Goto Forum:
  


Current Time: Fri Apr 19 22:39:38 CEST 2024

Total time taken to generate the page: 0.04322 seconds