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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 10 kwi 2025, o 19:30


    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: 2595
    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: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO