• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ImGui a większe 'funkjce'?

Object Storage Arubacloud
0 głosów
154 wizyt
pytanie zadane 15 maja 2020 w C i C++ przez Majster6918 Gaduła (4,030 p.)

Hej, robię mały projekt w ImGui, zauważyłem mały problem. Gdy wykonuje się jakaś większa funkcja to interfejs przycina.

Jest jakaś opcja obejścia tych ścinek ?

Np wykonywać je w pliku main poza kodem interfejsu ?

1 odpowiedź

+1 głos
odpowiedź 15 maja 2020 przez SimiVoid Pasjonat (19,790 p.)
wybrane 15 maja 2020 przez Majster6918
 
Najlepsza
Napisz program asynchnonicznie, na wielu wątkach.
komentarz 15 maja 2020 przez Majster6918 Gaduła (4,030 p.)
Okay dzięki
komentarz 15 maja 2020 przez tkz Nałogowiec (42,000 p.)

@SimiVoid, Skąd wiesz, że problem leży w wątkach, a nie w kodzie, mocy komputera?

1
komentarz 15 maja 2020 przez adrian17 Ekspert (344,860 p.)

Z tego co wiem, imgui jest normalnie używane w głównej pętli programu, więc z natury umieszczenie tam czegokolwiek synchronicznego długo trwającego zatrzyma pętlę zdarzeń i spowoduje widoczną "przycinkę".

mocy komputera

Jeśli program jest wolny na komputerze deva, to znaczy że na komputerze typowego usera możliwe że będzie jeszcze wolniejszy ;) A mam wrażenie że błędnie interpretujesz to na odwrót.

komentarz 15 maja 2020 przez tkz Nałogowiec (42,000 p.)

Znowu same spekulacje. Nie na tym to polega, w ciemno mogę rzucić, by Majster6918 kupił mocniejszy komputer. Skoro nie widzicie kodu, specyfikacji na jakiej zostało to uruchomione, to nadal tylko ślepe strzały. 

1
komentarz 16 maja 2020 przez adrian17 Ekspert (344,860 p.)
Jeśli "gdy wykonuje się jakaś większa funkcja to interfejs przycina", to coś wolnego synchronicznego dzieje się w pętli zdarzeń. To nie jest ślepy strzał.

"Mocniejszy komputer" nie powinno w ogóle być odpowiedzią.
komentarz 16 maja 2020 przez tkz Nałogowiec (42,000 p.)
Oczywiście, że jest to ślepy strzał. Jak powiem, że samochód wolno jedzie, to każesz dorzucić drugi silnik, bez sprawdzenia, czy mam benzynę? Pierwsze pytanie powinno być, czy autor pokaże kod, drugie dlaczego zrobił to tak, a nie inaczej.

Mocniejszy komputer jest odpowiedzią, skoro problem leży w prędkości wykonywania się zadań na jednym wątku, to szkopuł leży w prędkości procesora, albo w ramie, albo w prędkości dysku, znowu tylko strzały, bo tak jak pisałem, szklana kula. Co będzie szybsze 1GHz procesor, czy 3GHz? Gdyby wydajność aplikacji nie zależała od mocy komputera, oraz optymalizacji kodu, wszystkie aplikacje wymagały by miliona rdzeni.
komentarz 16 maja 2020 przez Majster6918 Gaduła (4,030 p.)

kupił mocniejszy komputer

Moja maszynka

i7-9700K

32 GB ram

rtx 2070

Dysk SSD PCIe  960gb

 

 

@tkz czy taki komputer na te czasy jest 'słaby'?

@SimiVoid masz rację, zrobiłem kolejne wątki i już nie przycina to wina leżała przy pętli 'while' bo to ona się przycinała, wielkie dzięki :D 

 

komentarz 16 maja 2020 przez adrian17 Ekspert (344,860 p.)

Oczywiście, że jest to ślepy strzał. Jak powiem, że samochód wolno jedzie, to każesz dorzucić drugi silnik, bez sprawdzenia, czy mam benzynę?

W tym porównaniu to Ty sugerowałeś mocniejszy silnik ;)

Jeśli autor mówi o widocznej "przycince", to nie ma tu wiele do zgadywania - robi coś co blokuje pętlę zdarzeń i renderowania na dłużej niż kilkaset milisekund, podczas gdy typowy budżet czasowy na rendering jest rzędu kilkunastu-kilkudziesięciu milisekund (zakładając koło 30fps). Lekki upgrade komputera nie poprawi magicznie czasu o rząd wielkości - a nawet gdyby, to potężnie zwiększa "minimalne wymagania" aplikacji - dlatego powtarzam, że "'Mocniejszy komputer' nie powinno w ogóle być odpowiedzią". 

wszystkie aplikacje wymagały by miliona rdzeni

"chcę robić coś co trwa kilka sekund i nie powoduje zacięcia się interfejsu" jest problemem rozwiązanym od dawna, bez potrzeby ani dodawania GHz, ani dodawania miliona rdzeni.

(oczywiście jest jeszcze trzecia opcja "przepisać wolny kod, by chodził 10-100x szybciej" - ale o wykonalności tego wie tylko autor, bo nie pokazał kodu :) )

komentarz 16 maja 2020 przez tkz Nałogowiec (42,000 p.)

@Majster6918, Rozumiesz, że nie podałeś tego na początku? A moja szklana kula jest w naprawie. 

@adrian17 

 

Oczywiście, że jest to ślepy strzał. Jak powiem, że samochód wolno jedzie, to każesz dorzucić drugi silnik, bez sprawdzenia, czy mam benzynę?

W tym porównaniu to Ty sugerowałeś mocniejszy silnik ;)

Mocniejszy, nie drugi, Jeden silnik(wątek). Zwiększyć moc można optymalizując kod(inna skrzynia biegów). Jeżeli jedyne rozwiązane przy którym się upierasz to skalowanie horyzontalne, to trochę słabo...

 

Gdy wykonuje się jakaś większa funkcja to interfejs przycina.

Z tego co widzę autor napisał po prostu "funkcja". Nie wiesz jaka funkcja, nie wiesz co robi, nie wiesz jak to robi. Nadal sądzisz, że nie jest to zwykły strzał? Gdyby wszystkie problemy z wydajnością rozwiązywało zwiększenie rdzeni, było by super, ale tak nie jest. Poważniejszym problem jest brak testów, jakichkolwiek by potwierdzić, że sposób z wieloma wątkami rozwiązał problem w optymalny sposób. 

Bez testów ani ja, ani Ty nie udowodnisz, że ten sposób jest dobry, czy zły. 

 

 

 

komentarz 16 maja 2020 przez Majster6918 Gaduła (4,030 p.)

Stary uspokój się, zrobienie nowego wątki mi działa koniec tematu już. 

void MyLoad(void* dummy)
{
    ConfigLauncher->Load();
    _endthread();
}
       _beginthread(MyLoad, 0, 0);

I tyle w temacie

Podobne pytania

0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 8 kwietnia 2020 w C i C++ przez Majster6918 Gaduła (4,030 p.)
0 głosów
1 odpowiedź 99 wizyt
pytanie zadane 12 grudnia 2016 w C i C++ przez krzysiek12345 Użytkownik (890 p.)
0 głosów
2 odpowiedzi 209 wizyt
pytanie zadane 8 grudnia 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)

92,568 zapytań

141,420 odpowiedzi

319,624 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...