Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 lis 2024, o 17:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 6 gru 2020, o 15:56 
Offline
Użytkownik

Dołączył(a): 25 maja 2014
Posty: 92
Lokalizacja: Krosno
Pomógł: 0

Zacznę od tego, że długo mnie tu nie było wiec na początek chciałem wszystkich serdecznie powitać:)

Koledzy, napisałem sobie kiedyś dla nauki mały programik do minimalizacji funkcji logicznych metodą Quine'a-McCluskeya
Program pisany najpierw w DELPHI7 pod win XP, potem przepisany w Rad Studio 10.2 pod Win7.
Jakiś czas temu zmieniłem kompa na nieco "młodszy" i przesiadłem się na WIN10.
Chciałem sobie podłubać przy nim jeszcze trochę i natknąłem na pewne zaskoczenie:(
Ten programik pod winXP i Win7 wykonywał minimalizację w jakimś tam określonym czasie. Oczywiście czas wykonania zależny od parametrów wejściowych.
Natomiast po uruchomieniu go na WIN10, minimalizacja wykonuje się 20 razy dłużej.
Powiedzmy, że w "extremalnym" przypadku kiedy jest najwięcej kroków iteracji czas pod XP i 7 to był na poziomie 7 do 9 sekund w zależności co tam przy okazji jeszcze komp sobie robił.
Natomiast w Win10, czas przy tych samych parametrach wejściowych wynosi 2min19s. :(

Zrobiłem zrzut ekranu dla porównania jak to wygląda w Win10 i WinXP na wirtualce. (zaznaczę, że na "starym kompie" pod WinXP i Win7 czasy są w zasadzie takie same jak ten z Xp na maszynie wirtualnej).

Obrazek

Domyślam się, że WIN10 ma jakieś mechanizmy, które spychają mój program w kolejce do wykonania na sam koniec. ?

Pytanie brzmi co można zrobić pisząc własną aplikację w Delphi 10.3.3 bo taką wersję teraz posiadam aby ustawić uruchomienie programu z wysokim priorytetem procesu?
Mam nadzieję, że nie pomieszałem pojęć.
Nie mam takiej wiedzy, żeby samemu sobie z tym tematem poradzić:(. Potrafię proste rzeczy sobie napisać na własne potrzeby ale.... :) proszę o wyrozumiałość jeśli mieszam pojęcia.

Z góry dzięki za pomoc

_________________
Artur



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2020, o 00:48 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2586
Pomógł: 128

Czy w trakcie obliczeń odświeżasz /aktualizujesz okno?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2020, o 08:15 
Offline
Użytkownik

Dołączył(a): 25 maja 2014
Posty: 92
Lokalizacja: Krosno
Pomógł: 0

Cześć:)
Micky dzięki za podpowiedź:)
W procedurze, która robi minimalizację umieściłem "Application.ProcessMessages" po to aby zrobić sobie małą animację mówiącą o tym, że trwa minimalizacja.

Wcześniej szukałem info pod hasłem zmiana priorytetu procesu i znalazłem, że w DELPHI można użyć "SetPriorityClass" ale moje próby nic nie dały.
Znalazłem na tym forum 4programmers.net opisany podobny przypadek do mojego, że pod win7 ten sam program wykonywał obliczenia krócej niż w Win10.
link: https://4programmers.net/Forum/Delphi_P ... windows_10
Autor "problemu" opisał, że w jednej z procedur wykonywanej wielokrotnie, użył komponent TEdit do zmiany stinga na float i jak zmienił podejście to mu zaczęło wszystko śmigać.

I ja sobie wtedy przypomniałem o wcześniej wspominanym Application.ProcessMessages. Usunąłem z mojej procedury i teraz minimalizacja przy największej ilości kroków iteracji trwa około 3,2 sekundy :)
Cieszę się z efektu ale nie zmienia to faktu, że nie rozumiem dlaczego Win10 w taki sposób reaguje a Win7 i XP działa inaczej :( a zrozumienie to podstawa:) rozumiem, że to różne systemy :)

Dzięki za pomoc:)

_________________
Artur



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2020, o 14:49 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27314
Lokalizacja: Szczecin
Pomógł: 1041

wywal z obliczeń dostęp do jakichkolwiek komponetów wizualnych, editów, Memo itp to PODSTAWA Podstaw. Jeśli nawet masz wyświetlać później wyniki w Memo to używaj pred startem

Memo1.Lines.BeginUpdate;
//..... obliczenia i wpisywanie czegoś do memo
Memo1.Lines.EndUpdate

a najlepiej to zrób całe obliczenia w oddzielnym wątku (użyj klasy TThread) i w nim możesz ustalić priorytet nawet wysoki ale i bez tego będzie śmigać że szok ;) na każdym systemie. ProcessMessages unikaj w długich obliczeniowych pętlach bo robisz masakrę w kolejkowaniu widomości, które Win10 po tysiąckroć lepiej obsługuje niż starsze systemy i dlatego nie można tego mechanizmu zatykać za pomocą processmessages ;)


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2020, o 16:44 
Offline
Użytkownik

Dołączył(a): 25 maja 2014
Posty: 92
Lokalizacja: Krosno
Pomógł: 0

Cześć,
Mirku już tak zrobiłem, w procedurze nie miałem żadnych odwołań do komponentów wizualnych, tylko "processmessages" ale w 3 miejscach :(.
Usunąłem wszystkie jakie miałem (3 sztuki) :oops: i wszystko zaczęło śmigać.
Teraz przy największej liczbie kroków iteracji (ponad 131 milionów), minimalizacja zajmuje 3,2s.
Dzięki za pomoc :)
Teraz będę starał się opanować wątki. Jak to się mówi "wszystko dla ludzi" :)

Pozdrawiam Serdecznie

_________________
Artur



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2020, o 18:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27314
Lokalizacja: Szczecin
Pomógł: 1041

a pewnie - że wątki są dla ludzi - szkoda że tak mało ludzi interesuje się delphi - bo mógłbym zrobić fajny poradnik wideło na temat tego jak szybko wskoczyć w wątki w delphi ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2020, o 22:03 
Offline
Użytkownik

Dołączył(a): 25 maja 2014
Posty: 92
Lokalizacja: Krosno
Pomógł: 0

Mirku warto nawet dla małej garstki osób :)
nie daj się prosić :)

_________________
Artur



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO