stanislav.bezkorovainyi's blog

By stanislav.bezkorovainyi, history, 6 years ago, In English

I tried to test perfomance of different approaches to build and use trie data structure.

I used 706D - Мультимножество Василия to test my versions of tries on it.

The question is: Why does approach with pointers takes 2 times more memory than one with static array? As I know, a pointer stores an address of a variable, so it shouldn't take that much memory.

Here are my submissions:

Pointer approach: 40063381

Static array approach: 40063561

Any suggestions are welcomed!

»
6 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Sorry for my mistakes in English (if there were any)

»
6 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Storing a pointer takes 4 or 8 bits depending on whether you use 32-bit or 64-bit OS.

»
6 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Most probably, it is caused by memory fragmentation.

»
6 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Nice problem, thanks! You can try your trie on this problem, very interesting, but I solved it with sort + implicit trie + binary search in O(n * log(n) * WORD_WIDTH) time, with your trie you can get O(n * WORD_WIDTH) time.

About 64-bits pointers and 32-bit pointers. I think that you can't solve this problem with persistent segment tree if you will use pointers against indexes in array — my friend gets memory limit exceeded, but you can check it and write to me. My solution on array against 64-pointers (russian comments, sorry).

English statement of 4498 e-olymp