I used _list_ as key of table.<br>Now I need more faster and lighter so I tested some.<br><br>Before I tested, I think that _atom_ is the fastest and smaller mnesia files.<br>And I thought that _binary_ is the best candidate because _atom_ has issue of garbage collection.<br>
<br>But test results make me confused.<br><br>Q0. What is the best type as key?<br><br>== test results ==<br><br>There are three candidates; list, binary and atom.<br><br>100k keys;<br> list keys are "k1000001" ~ "k1100000",<br>
binary keys are <<"k1000001">> ~ <<"k1100000">>,<br> atom keys are k1000001 ~ k1100000.<br><br>I tested both mnesia types; disc_copy and disc_only_copy<br><br>Q1. Mnesia file sizes are strange, what's wrong?<br>
- disc_copy<br> size table_type<br> 3100089 atom.DCD<br> 3300089 binary.DCD<br> 3100089 list.DCD<br>- disc_only_copy<br> size table_type<br> 5391992 list_o.DAT<br> 6489808 binary_o.DAT<br> 6130276 atom_o.DAT<br>
<br> * Every key has same value.<br> * checked the sizes after q().<br><br><br> accoding to <a href="http://erlang.org/doc/efficiency_guide/advanced.html">http://erlang.org/doc/efficiency_guide/advanced.html</a><br> list : 1 word + 2 words * 8(length of a list) = 17 words<br>
binary : 3..6 + 8(length of a list) = 11 ~ 14 words<br> atom : 1 word<br> so I thought the size order will list > binary >> atom.<br><br>Q2. Why atom is not fastest? atom is sometimes the slowest.<br> atom read : 61.095<br>
binary read : 65.729<br> list read : 84.162<br><br> atom write : 858.18<br> binary write : 913.092<br> list write : 861.357<br><br> atom_o read : 1657.427<br> binary_o read : 1453.002<br> list_o read : 1482.138<br>
<br> atom_o write : 1765.436<br> binary_o write : 2261.9<br> list_o write : 2289.084<br><br> * read and write every tables(100k)<br> * tried to avoid difference of period to get a key.<br> * milli seconds<br>
<br>* I think that the best type is _integer_, but I want use one of them.<br><br>thanks.<br>/nanun<br>