Przechowywanie tablicy w ram-ie

0

Cześć. Jestem tutaj nowy więc witam wszystkich.

Mam problem z aplikacją na kinecta. Zbieram w niej pozycje wszystkich kończyn/stawów oraz czas i zapisuje do tablicy. Na koniec tablica ta jest zapisywana do .txt. Problem polega na tym że moja tablica znajduje się chyba w cache-u procesora co skutkuje blokada programu po kilku sekundach (rośnie obciążenie cpu i tyle). Jak przechowywać tą tablicę w ramie a nie w cache-u cpu? Nie jestem programistą więc sorry za ewentualny mało fachowy język.

Implementacja mojej tablicy:

  public double[] measurement  = { };
.............
public double[] Measures(double[] pomiar) 
            {
                    measurement = measurement.Concat(pomiar).ToArray(); // Concatenate a 4-element vector [JointLabel, x, y, z].
                    size++;
             
                    return measurement;                 
                
            }

0

Zmienień double[] na List<double>a concat na add. Ed. piszesz ze pomiar to wector, bedziesz musiał każda czesc wektora dodać osobno lub, zamiast double uzyc List<double[]> lub napisać stukture/classe i ją dodawać w miejsce double

1

co skutkuje blokada programu po kilku sekundach (rośnie obciążenie cpu i tyle)

To nie wypełnianie tablicy to powoduje, tylko twój program robi gdzieś obciążające zadania.
A odnośnie fragmentu kodu który dałeś - powinieneś zrobić mniej więcej tak:

public List<double> measurement  = new List<double>();
.............
public double[] Measures(double[] pomiar) 
{
   measurement.AddRange(pomiar);
   size++;
   return measurement;
}

Dane wówczas będą spłaszczone w jednym wektorze, ale domyślam się, że tak ma być.

1

oprocz tego co juz ci zasugerowano, podaj liscie rozmiar do zaalokowania np jesli wiesz ze elementow nie bedzie wiecej niz 10k to stworz liste new List<double>(10000);

1 użytkowników online, w tym zalogowanych: 0, gości: 1