Witam. pisze oprogramowanie do wyświetlania danych na wykresie. Dane pobieram z pliku binarnego a nastepnie wyświetlam je na wykresie. wszystko działa tylko że danych jest bardzo dużo i samo wyświetlanie trwa troche czasu. Czy istnieje jakaś metoda aby ten czas jakoś skrócić?

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
- Postów:4882
albo wyswietlac mniej danych (przed wyswietlaniem). Pogrupowac, usunac jakies ktore sa nadmiarowe
- Rejestracja:ponad 7 lat
- Ostatnio:ponad rok
- Postów:19
w petlach for wybieram odpowiednie dane z pliku binarnego następnie przeliczam i probuje wyswietlic na wykresie. jest ok 900k probek do wyswietlenia. zajmuje to jednak toche czasu i tutaj jest moje pytanie czy mozna to jakos przyspieszyc
`` for (int i = dl_paczki_poczatkowej*dl_paczki; i < dl_pliku_bajt; i += dl_paczki){
for (int k = i + dl_licznika_paczki; k < i + dl_paczki; k += dl_ramki){
for (int j = k, l = 0 ; j < k + dl_ramki, l < dl_ramki; j++, l++){
ramka[l] = bufor[j];
}
bufor_kanal1[n] = ((400 * (Convert::ToSingle(ramka[4] & 0x03FF) - 512)) / 1024);
bufor_kanal2[n] = ((2 * (Convert::ToSingle(ramka[5] & 0x03FF) - 512)) / 1024);
bufor_kanal3[n] = ((2 * (Convert::ToSingle(ramka[6] & 0x03FF) - 512)) / 1024);
bufor_kanal4[n] = ((10 * (Convert::ToSingle(ramka[7] & 0x03FF) - 512)) / 1024);
bufor_czas[n] = Convert::ToSingle((ramka[1] * 65536 + ramka[0]) & 0x003FFFFF) / 10000;
this->chart1->Series["wykres"]->Points->AddXY(bufor_czas[n], bufor_kanal1[n]);
this->chart1->Series["wykres1"]->Points->AddXY(bufor_czas[n],bufor_kanal2[n]);
n++;
}
}``
- Rejestracja:ponad 7 lat
- Ostatnio:ponad rok
- Postów:19
w petlach for wybieram odpowiednie dane z pliku binarnego następnie przeliczam i probuje wyswietlic na wykresie. jest ok 900k probek do wyswietlenia. zajmuje to jednak toche czasu i tutaj jest moje pytanie czy mozna to jakos przyspieszyc
for (int i = dl_paczki_poczatkowej*dl_paczki; i < dl_pliku_bajt; i += dl_paczki){
for (int k = i + dl_licznika_paczki; k < i + dl_paczki; k += dl_ramki){
for (int j = k, l = 0 ; j < k + dl_ramki, l < dl_ramki; j++, l++){
ramka[l] = bufor[j];
}
bufor_kanal1[n] = ((400 * (Convert::ToSingle(ramka[4] & 0x03FF) - 512)) / 1024);
bufor_kanal2[n] = ((2 * (Convert::ToSingle(ramka[5] & 0x03FF) - 512)) / 1024);
bufor_kanal3[n] = ((2 * (Convert::ToSingle(ramka[6] & 0x03FF) - 512)) / 1024);
bufor_kanal4[n] = ((10 * (Convert::ToSingle(ramka[7] & 0x03FF) - 512)) / 1024);
bufor_czas[n] = Convert::ToSingle((ramka[1] * 65536 + ramka[0]) & 0x003FFFFF) / 10000;
this->chart1->Series["wykres"]->Points->AddXY(bufor_czas[n], bufor_kanal1[n]);
this->chart1->Series["wykres1"]->Points->AddXY(bufor_czas[n],bufor_kanal2[n]);
n++;
}
}
- Rejestracja:ponad 10 lat
- Ostatnio:2 miesiące
- Lokalizacja:Małopolska
- Postów:643
zrobilem takie cos w liceum :) w delphi 3
- wykres.png (7 KB) - ściągnięć: 137

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
- Postów:4882
przy 900k probkach to nic dziwnego ze Ci wolno dziala
sprobuj
FastLine albo FastPoint.
Tez mozesz sprobowac usunac tooltip
https://social.msdn.microsoft.com/Forums/en-US/906e0778-4cc4-4460-8079-f43c428c729a/ecg-chart-performance-problem?forum=MSWinWebChart
(szkoda ze nie napisales co to za framework i jakiego typu jest ten chart)
- Rejestracja:ponad 7 lat
- Ostatnio:ponad rok
- Postów:19
Wlasnie mam wybrany fastline. A plik binarny jest zapisany ramkami udp. Ja po prostu z odpowiednich pól wybieram probki czasu i napiecia
- Rejestracja:ponad 7 lat
- Ostatnio:ponad rok
- Postów:19
Chyba bez decymacji lub obcięcia pliku się nie obejdzie. A mam jeszcze jedno pytanie... korzystam z komputera z zintegrowaną kartą graficzna, i jak wrzucam dane na wykres to w menedżerze zadań widać jak rośnie rozmiar pamięci zajmowanej przez program. Czy jak wrzucę aplikacje na komputer z dedykowaną kartą graficzną to aplikacja rozdzieli dane na pamięć karty graficznej ??