CMapPtrToPtr in MFC
7 отговора
208 прегледа
CMapPtrToPtr in MFC
днес за сефте пробвах това нещо, и останах леко разочарован. до сега от колекциите съм ползвал динамичните масиви и не съм имал оплаквания, обаче това чудо никак не е оптимално. говоря за функцията време_за_търсене (брой_елементи). при малък брой елементи времето е долу горе константа (0.2 микросекунди), обаче като минат 500 започва да нараства. отначало нараства по-бавно от бройката, обаче по едно време се изравняват, а за бройки от порядъка на 10 000 дори започна да расте главоломно, което означава че алгоритъм с грубо изброяване ще е по-оптимален!
май четох някъде че ползват хеш функция вътре, но не съм сигурен. не знам какво ползват, обаче написах същия компонент със двоично дърво - работи за константно време от 0.4 микросекунди на търсене, без значение броя на елементите.
сега го проверих по-подробно, ето малко учудващи резултати:
обърнете внимание на скока между 10000 и 15000.
май четох някъде че ползват хеш функция вътре, но не съм сигурен. не знам какво ползват, обаче написах същия компонент със двоично дърво - работи за константно време от 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.
Re: CMapPtrToPtr in MFC
mi wij default razmera na hash tablicata i 6te ti stane qsno ;)
да, така става, но
не върши работа ако не се знае орентировъчния размер. а ако се опитам да я променя на пълен стомах гърми.
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...
а, аз си го направих вече
с дърво го направих, бачка бързо и не иска предположения за големина, ама плюска памет.
абе ще ми се смеят ама
не съм помирисвал stl, а и едва ли ще помириша, освен ако не ми посочат много сериозна причина. а само за един мап не си струва да го разучавам и то при положение че мапа се пише от нула за няма и половин час.
Re: абе ще ми се смеят ама
ай са - тоя от STL-a дето върви с VC_to е red-black tree - малко щи е трудно за половин час да го напишеш :)