CMapPtrToPtr in MFC

7 отговора 208 прегледа
#1

CMapPtrToPtr in MFC

днес за сефте пробвах това нещо, и останах леко разочарован. до сега от колекциите съм ползвал динамичните масиви и не съм имал оплаквания, обаче това чудо никак не е оптимално. говоря за функцията време_за_търсене (брой_елементи). при малък брой елементи времето е долу горе константа (0.2 микросекунди), обаче като минат 500 започва да нараства. отначало нараства по-бавно от бройката, обаче по едно време се изравняват, а за бройки от порядъка на 10 000 дори започна да расте главоломно, което означава че алгоритъм с грубо изброяване ще е по-оптимален!
май четох някъде че ползват хеш функция вътре, но не съм сигурен. не знам какво ползват, обаче написах същия компонент със двоично дърво - работи за константно време от 0.4 микросекунди на търсене, без значение броя на елементите.
сега го проверих по-подробно, ето малко учудващи резултати:

елементи Lookup (µs) SetAt (µs)
100 0.260 0.36
500 0.340 0.32
1000 0.455 0.39
1500 0.58 0.46
10000 4.24 2.1
15000 13.5 3.5
100000 328 54


обърнете внимание на скока между 10000 и 15000.

Отговор
в отговор на zaphod #2

Re: CMapPtrToPtr in MFC

mi wij default razmera na hash tablicata i 6te ti stane qsno ;)

Отговор
в отговор на drone #3

да, така става, но

не върши работа ако не се знае орентировъчния размер. а ако се опитам да я променя на пълен стомах гърми.

Отговор
в отговор на zaphod #4

Re: да, така става, но

mi wij nqkakyw optimalen razmer izberi... drugiq wariant e da polzwa6 ne6to drugo, stl-skiq map ne ti li wyr6i rabota? toj e realiziran s tree i bi trqbwalo da e po-byrz...

Отговор
в отговор на drone #5

а, аз си го направих вече

с дърво го направих, бачка бързо и не иска предположения за големина, ама плюска памет.

Отговор
в отговор на zaphod #6

Re: а, аз си го направих вече

риторичен въпрос - що не ползваш map от STL?

Отговор
в отговор на Questor #7

абе ще ми се смеят ама

не съм помирисвал stl, а и едва ли ще помириша, освен ако не ми посочат много сериозна причина. а само за един мап не си струва да го разучавам и то при положение че мапа се пише от нула за няма и половин час.

Отговор
в отговор на zaphod #8

Re: абе ще ми се смеят ама

ай са - тоя от STL-a дето върви с VC_to е red-black tree - малко щи е трудно за половин час да го напишеш :)

Отговор