rhapsody — проверять элементы массива, если они были изменены, и быстро обновлять значения для больших массивов в Stack Overflow

У меня есть следующий код:

const int size=9;
mtype array[size];
array[0]...
array[0].Value=me->getRootInstance()->A();
array[0]...

...

array[3000]...
array[3000].Value=me->getRootInstance()->A3000();
array[3000]...

while(Logging::getLogging()){

if(!areEqual(array[0].Value,me->getRootInstance()->A())){array[0].Value=me->getRootInstance()->A(); saveValue(array[0]);}
...
if(!areEqual(array[3000].Value,me->getRootInstance()->A3000())){array[3000].Value=me->getRootInstance()->A3000(); saveValue(array[3000]);}

}
return 0;

Массив структур инициализируется в начале и проверяется на наличие изменений. Если происходят изменения, значения в массиве должны быть обновлены.
Проблема в том, что текущий код очень медленный, я знаю, что изменения происходят каждые 100 миллисекунд. для небольших массивов работает нормально. Тем не менее, если массив большой (3000 элементов), задержка обновления составляет более 3 с.
Есть ли лучший способ сравнить и обновить элементы массива?

функция areEqual выглядит так: return fabs(a - b) < 0.000000000001;

и saveValues ​​() выглядит так:

OMGuard _omGuard(r_omGuard);
int tc = clock()-Logging::getStarttime(); //clicks
double seconds = ((double)tc)/CLOCKS_PER_SEC;

mtype *newstruct = new mtype();

newstruct->Calltime = seconds;
newstruct->Name = melem.Name;
newstruct->Value = melem.Value;
newstruct->GUID = melem.GUID;
newstruct->ReqName = melem.ReqName;
newstruct->ReqGUID = melem.ReqGUID;

monitoredlist.add(newstruct);

Спасибо за любую помощь!
Привет
издание

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]