ATNEL tech-forum
https://forum.atnel.pl/

Różny czasy wykonywania się programu pod WIN10 i WIN_XP, 7
https://forum.atnel.pl/topic23468.html
Strona 1 z 1

Autor:  Artur_26 [ 6 gru 2020, o 15:56 ]
Tytuł:  Różny czasy wykonywania się programu pod WIN10 i WIN_XP, 7

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

Autor:  micky [ 7 gru 2020, o 00:48 ]
Tytuł:  Re: Różny czasy wykonywania się programu pod WIN10 i WIN_XP,

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

Autor:  Artur_26 [ 7 gru 2020, o 08:15 ]
Tytuł:  Re: Różny czasy wykonywania się programu pod WIN10 i WIN_XP,

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:)

Autor:  mirekk36 [ 7 gru 2020, o 14:49 ]
Tytuł:  Re: Różny czasy wykonywania się programu pod WIN10 i WIN_XP,

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:  Artur_26 [ 7 gru 2020, o 16:44 ]
Tytuł:  Re: Różny czasy wykonywania się programu pod WIN10 i WIN_XP,

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

Autor:  mirekk36 [ 7 gru 2020, o 18:00 ]
Tytuł:  Re: Różny czasy wykonywania się programu pod WIN10 i WIN_XP,

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 ;)

Autor:  Artur_26 [ 7 gru 2020, o 22:03 ]
Tytuł:  Re: Różny czasy wykonywania się programu pod WIN10 i WIN_XP,

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

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/