Przyspieszenie wyświetlania na ekranie

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 16:40

W Process Explorer wynik jest jeszcze gorszy, tylko trzeba ustawić częstotliwość odświeżania na 0.5 sekundy, a nie domyślną 1s. Zresztą jak widać po wykresie, nie ma to większego znaczenia.

graph.png
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez GrassHoppeR » piątek, 14 stycznia 2011, 17:32

u mnie sprawa wygląda zupełnie inaczej:

proc.jpg
a - zwykła praca, no może trochę bardziej intensywna niż zwykła
b - znęcanie się nad klockiem
c - równie intensywny resize okna
d - i takież samo przesuwanie scrollbarem
podczas pracy sklonowałem klocek kilkadziesiąt razy, a ten, nad którym się znęcałem był na prawie całą szerokość okna. rozdzielczość ekranu 1920x1080.

ciekawa sprawa dlaczego u Ciebie jest takie zużycie. jak już pisałem na maszynie wirtualnej sprawa ma się podobnie jak u Ciebie.
na pewno sprawdzasz kompilację z dziś z 14:24?
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
GrassHoppeR
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): wtorek, 4 stycznia 2011, 01:17
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 2491715
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 17:51

No masz ten wykres jeszcze raz.

graph.png


Ten pierwszy grzbiet to kliknięcie w oknie, potem klocek był przesuwany bardzo powoli. Być może jest to spowodowane faktem, że ja mam Pentium 2.3 GHz jednordzeniowy, a Ty być może masz CoreDuo. Może to kwestia ustawień systemu. Ja np. nie mam pliku wymiany, czyli wszelkie operacje wykonywane są w pamięci fizycznej RAM. Procesor mam ustawiony pod kontem większego udziału dla programów, a nie systemu. Nie zmienia to jednak faktu, że cała Twoja optymalizacja jest jak o dupę potłuc, gdyż na jednym komputerze działa wydajnie, a na drugim już nie.
Programu tworzy się tak by działały wydajnie, a nie korzystały jak najmniej z procesora.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 18:02

Jeszcze jedna ciekawostka. Ja swojego programu nie optymalizowałem tak jak Ty lecz tworzyłem go z myślą o wydajnej pracy i oto mamy wykres:

graph.png


Test został przeprowadzony na tym samym komputerze, czyli w tych samych warunkach, więc mimo różnic między Twoim i moim komputerem, wynik pozostaje jednoznaczny.

Mój ostatni program działa lepiej i wydajniej, bo nie kombinowałem z zegarami, sztucznym odświeżaniem itp. Zdałem się na system i oparłem kod na systemowym API, czyli odświeżaniem steruje zdarzenie OnRepaint będące elementem API. Ustawiłem również kompilację projektu pod kontem szybkości działania programu.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez GrassHoppeR » piątek, 14 stycznia 2011, 18:28

ale zrozum, że mój program się od twojego nie różni żadnym sztucznym odświeżaniem. tak samo korzystam z Draw tylko nie w onPaint a w onTimer (w onPaint mam tylko zapalenie kontrolki need_upd), czyli wykonuję je nie częściej niż co 20 ms i tylko wtedy, kiedy trzeba (zarówno przy onPaint jak i onMouseMove). twój program nie działa u mnie wydajniej (dochodzi do 6%), a przede wszystkim nie tworzy tła rysując inne klocki tak, jak mój, więc nie działa lepiej, działa inaczej. no, może goła baba sprawia, że pracowałoby się przyjemniej, ale na twoim nie można.

ja też mam plik wymiany wyłączony, faktycznie mam dwa rdzenie, ale co to niby ma zmieniać?
może to z twoim system jest coś nie tak, bo w tym programie nie ma co obciążać procesora (z resztą od początku to pisałem). to ty mi zasugerowałeś użycie GDI+ jako korzystające z przyspieszenia sprzętowego i pisałeś, że wypełnianie ekranu jest u ciebie błyskawiczne.
a ten program właśnie nic innego nie robi jak tylko zmienia przy użyciu GDI+ bitmapę w bardzo małym stopniu (maksymalnie szerokość ekranu*30 punktów), i robi to nie częściej niż co 20 ms, więc o jakiej mojej "słabej" optymalizacji mówisz? jedyna rzecz to odrysowywanie tylko fragmentu bitmapy zamiast jak poprzednio za każdym razem całości, a i wtedy miałem zużycie procesora na niewiele wyższym poziomie niż teraz. sprawdzę jeszcze jak będzie działać na zintegrowanej X4500, ale nie wydaje mi się, żeby to o to chodziło. ty masz jaką?

inna sprawa to co to jest wydajność, skoro nie zużycie procesora? jakie są te optymalizacje, które zrobiłeś z myślą o wydajnej pracy?

to, co jest do zoptymalizowania u mnie to operacje na vectorze obiektów, ale to temat na inny wątek.
Avatar użytkownika
GrassHoppeR
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): wtorek, 4 stycznia 2011, 01:17
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 2491715
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 18:40

o ty mi zasugerowałeś użycie GDI+ jako korzystające z przyspieszenia sprzętowego i pisałeś, że wypełnianie ekranu jest u ciebie błyskawiczne.


Pisałem, że GDI+ nie korzysta ze wsparcia sprzętowego, to GDI korzysta, GDI+ NIE!.

Pomiary nie kłamią. System mam w pełni sprawny, gdyż zawodowo zajmuję się naprawą komputerów.

Ja używam karty graficzne GeForce 6200 na AGP.

Ja tylko przeprowadzam testy, warunki testów są identyczne, zmieniają się tylko programy, wyniki jak widać na wykresach. U mnie mój program jest wydajniejszy.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez GrassHoppeR » piątek, 14 stycznia 2011, 18:43

a u mnie mój. jaka jest prawda?

to GDI korzysta, GDI+ NIE!.

a więc karta nie powinna mieć znaczenia. więc wydajność procesora?
Avatar użytkownika
GrassHoppeR
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): wtorek, 4 stycznia 2011, 01:17
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 2491715
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 18:46

a więc karta nie powinna mieć znaczenia. więc wydajność procesora?


Zastanów się co piszesz. Wszystkie operacje graficzne na ekranie wykonuje karta graficzna.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez GrassHoppeR » piątek, 14 stycznia 2011, 18:53

no jeśli GDI+ nie korzysta ze wsparcia sprzętowego to ma ona wpływ na szybkość operacji GDI+ na bitmapie w pamięci czy jednak nie?
Avatar użytkownika
GrassHoppeR
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): wtorek, 4 stycznia 2011, 01:17
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 2491715
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez polymorphism » piątek, 14 stycznia 2011, 19:04

Cyfrowy Baron napisał(a):Poza tym tutaj nie trzeba specjalnych programów, uruchom Menadżera zadań, ustaw dużą częstotliwość odświeżania przejdź do wykresu i zobacz jak zmienia się, gdy klocek jest przesuwany.

Process Explorer jak i systemowy menadżer na maksymalnym odświeżaniu (500ms) pokazuje takie same wyniki (2-3%).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 19:06

Co oznacza wsparcie sprzętowe? To złożone zagadnienie, ale oznacz to, że aplikacja najpierw wysyła informacje do GDI, potem GDI przesyła to dalej do sterownika urządzenia DDI, a ten ma możliwość bezpośredniego adresowania rejestrów i pamięci karty graficznej. Czym GDI+ różni się od GDI - niemal wszystkim. Dlaczego GDI+ nie korzysta ze wsparcia sprzętowego - nie wiem, wiem tylko, że nie korzysta i dlatego jest mniej wydajne.

Dobrze zostało to opisane tutaj: http://kis.pwszchelm.pl/publikacje/VII/Smiatacz.pdf


Co się tyczy Twojego problemu, to w istocie Twój problem. Jak ten program napiszesz tak będzie działał. Jak już wspomniałem, ja tylko przeprowadzałem testy na sprzęcie jaki miałem, a wyniki przedstawiałem w postaci wykresów. Testy przeprowadzałem zawsze w tych samych warunkach. Wynik jest jak widać, nie będę dyskutował z faktami, a fakty wskazują, że na takim sprzęcie jak mój, zaproponowany przeze mnie sposób rysowania jest wydajniejszy o około 50 % w stosunku do Twojego programu.
Gdy napiszesz nowy program, znów go uruchomię i porównam wyniki pomiarów, jeżeli będą lepsze nie omieszkam o tym napisać, ale nie mów mi, że to co widzę na wykresach, nie jest tym co tam faktycznie jest.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 19:07

Process Explorer jak i systemowy menadżer na maksymalnym odświeżaniu (500ms) pokazuje takie same wyniki (2-3%).


A u mnie pokazuje co innego, co zresztą widać na wykresach. I co Ty na to?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez Cyfrowy Baron » piątek, 14 stycznia 2011, 19:13

Piszcie co chcecie, ale:

graph.png


Tak to u mnie wygląda z tym programem.

A tak to wygląda z moim programem:

graph.png


I choćbym nie wiem jak zaklinał rzeczywistość, te wykresy nie zmienią się.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez GrassHoppeR » piątek, 14 stycznia 2011, 19:19

zaproponowany przeze mnie sposób rysowania jest wydajniejszy o około 50 % w stosunku do Twojego programu.

a Twój program nie korzysta z GDI+ przypadkiem?

ja Ci nie mówię, że nie widzisz różnicy w zużycia procesora, tylko że nie jest to kwestia mojej złej optymalizacji (cokolwiek w tym przypadku by to znaczyło). podejrzewam tylko, że stoją za tym jakieś inne przyczyny niż rzekome "przekombinowanie" w przypadku mojego programu.

w tej wersji http://grasshopper.no-ip.info/Project1.zip zmieniłem częstość odświeżania co 40 ms. mógłbyś sprawdzić jak wygląda obciążenie w jego przypadku?

i wytłumacz mi, proszę, na czym polega optymalizacja w przypadku Twojego programu.
Avatar użytkownika
GrassHoppeR
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): wtorek, 4 stycznia 2011, 01:17
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 2491715
    Windows XPFirefox

Re: Przyspieszenie wyświetlania na ekranie

Nowy postprzez polymorphism » piątek, 14 stycznia 2011, 19:24

Garść screenów ode mnie:
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia stronaNastępna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość