У меня есть класс, который выглядит примерно так:
class node{// case 1
float points[maxCap][d];
...
}
Я также могу сделать это следующим образом:
class node{// case 2
float** points;
node(){
points = (float**)malloc(maxCap*sizeof(float*));
if(points)
for(int i=0; i<maxCapacity; i++)
points[i] = (float*)malloc(d*sizeof(float));
else{
cout<<"Unable to get memory"<<endl;
exit(1);
}
}
...
}
Они в основном являются узлами в дереве. Я создаю приблизительно от 500 000 до 1 000 000 из них.
Когда я ищу точку, причем каждая вещь в алгоритме поиска одинакова, случай 2 получается примерно 0,2 секунд медленнее, чем в случае 1 (в среднем за 3 прогона - хотя время более или менее одинаково для всех 3 прогонов). Время для случая 1 составляет приблизительно 0.88s
, а для случая 2 - приблизительно 1.07s
. Может кто-нибудь сказать мне, что здесь происходит? Разве это не должно быть примерно таким же?