Startup application

Acest forum este dedicat intrebarilor de Windows API, folosing C/C++
Post Reply
User avatar
Comodus
Junior
Junior
Posts: 25
Joined: 17 Jan 2009, 23:07
Judet: Braşov

Startup application

Post by Comodus » 06 Jan 2011, 16:45

Salut!
Am si eu o intrebare si astept parerile voastre:Vreau sa cronometrez cat dureaza ca un anumit process(aplicatie) sa se termine de incarcat, problema cu care
ma confrunt este ca nu stiu in ce moment pot considera ca aplicatia mea este gata de executie.
Multumesc!


A wise man has once said that “we are jumping to conclusions when we are bored of thinking".

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Startup application

Post by Marius Bancila » 06 Jan 2011, 17:30

Pai poate momentul in care userul poate face ceva?
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: Startup application

Post by Silviu Ardelean » 06 Jan 2011, 18:20

Ce fel de aplicatie ai? O banala aplicatie de consola ce-i dai drumul si astepti sa ti se termine sau o aplicatie windows multithreaded, etc?

User avatar
Comodus
Junior
Junior
Posts: 25
Joined: 17 Jan 2009, 23:07
Judet: Braşov

Re: Startup application

Post by Comodus » 07 Jan 2011, 10:00

@Silviu
Poate fi orice tip de aplicatie inclusiv o aplicatie windows multithreading.
A wise man has once said that “we are jumping to conclusions when we are bored of thinking".

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Startup application

Post by neagu_laurentiu » 07 Jan 2011, 10:28

Teoretic la prima instructiune din main() sau WinMain(). Acum depinde ce mai faci dupa pana cand userul are controlul...

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Startup application

Post by Ovidiu Cucu » 07 Jan 2011, 10:36

Pui problema foarte vag si la modul general. In felu acesta e greu si pentru Mama Omida sa ghiceasca.
S-a uitat totusi in globul de cristal si a vazut WaitForInputIdle.
Este ceea ce cauti? Eu nu pot fi atat de sigur. Oricum nu la modul general. ;)

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: Startup application

Post by Silviu Ardelean » 07 Jan 2011, 11:46

Comodus wrote:@Silviu
Poate fi orice tip de aplicatie inclusiv o aplicatie windows multithreading.
Te-am intrebat ptr. ca lucrurile nu stau la fel in orice tip de aplicatie (ex. una o o banala aplicatie consola si alta e un MDI + ca daca mai e si multithreaded lucrurile se complica putin).
Cum spunea si Ovidiu, enuntul problemei tale e incomplet si vag.

User avatar
Comodus
Junior
Junior
Posts: 25
Joined: 17 Jan 2009, 23:07
Judet: Braşov

Re: Startup application

Post by Comodus » 07 Jan 2011, 16:33

Salut
Nu stiu cum as putea fi mai explicit dar totusi am sa incerc :) . Sa presupunem ca am o aplicatie "generala" care se afla la Startup, pe mine ma intereseaza sa aflu cu cat imi ingreuneaza aceasta aplicatie timpul de incarcare a sistemului de operare si sa imi dau seama daca imbunatesc sau nu acest timp scotand aplicatia de la startup.
Eu am plecat de la premisa: ca diferenta de timp din momentul in care aplicatia s-a creat si momentul de timp in care aplicatia si-a incheiat initializarea si este gata de executie reprezinta durata timpului de incarcare a aplicatiei; Problema cea majora este ca nu pot sa-mi dau seama de momentul in care o aplicatie devine disponibila de executie.
Am incercat cateva variante si anume:
- cand incepe executia codului din main();
- cand aplicatia a terminat de incarcat toate modulele(dll-urile) dependente in memorie;
Aceste variante imi ofera insa timpi ff nmici :0.01 sec; Mai ramane sa vad ce procent din procesor ocupa aplicatia imediat ce s-a creat si daca este de 0% sa consider ca este idle.
@Ovidiu: Am incercat si cu functia WaitForInputIdle() dar din ce am citit pe MSDN daca un proces creeaza mai multe fire de exec, functia isi term exec odata ce un thread devine idle pe langa faptul ca in anumite teste ale mele funcita WaitForInputIdle() se blocheaza.
Sper ca Mama Omida sa fie multumita acum! :D
Multumesc!
A wise man has once said that “we are jumping to conclusions when we are bored of thinking".

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Startup application

Post by Marius Bancila » 07 Jan 2011, 16:47

Destul de general ce vrei tu sa faci, si nu prea cred ca vei gasi o solutie buna la toate. Probabil pe aplicatii diferite, abordari diferite iti vor da mai mult success. Acuma, inceputul executiei in main nu inseamna ca aplicatia e gata. De aici deaba isi incepe executia dupa initializarea variabilelor globale. Poate sa mai dureze mult si bine, daca de exemplu citeste multe lucruri dintr-o baza de date, de pe retea, sau mai stiu eu unde. De asemenea incarcarea tuturor modulelor nu inseamna nimic, pentru ca majoritatea modulelelor se incarca cu delay load, adica doar in momentul cand ai prima data nevoie de ceva de acolo. Cum ziceam, o aplicatia e gata incarcata cand user-ul poate face ceva (ignor acum serviciile sau alte procese care nu au interactiune cu utilizatorul).
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Startup application

Post by Ovidiu Cucu » 08 Jan 2011, 10:37

Comodus wrote:@Ovidiu: Am incercat si cu functia WaitForInputIdle() dar din ce am citit pe MSDN daca un proces creeaza mai multe fire de exec, functia isi term exec odata ce un thread devine idle pe langa faptul ca in anumite teste ale mele funcita WaitForInputIdle() se blocheaza.
Sper ca Mama Omida sa fie multumita acum! :D
Mama Omida s-a apucat de ghicit in cafea si-acum sta si staa... si staaaa si-asteapta... :biggrin:
splash.gif
splash.gif (11.41 KiB) Viewed 10432 times
Eu cred c-a apelat WaitForInputIdle din thread-ul care nu trebuie si/sau are prea mare incredere in timeout-uri INFINITE. ;)

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Startup application

Post by Ovidiu Cucu » 08 Jan 2011, 11:06

Comodus wrote:Mai ramane sa vad ce procent din procesor ocupa aplicatia imediat ce s-a creat si daca este de 0% sa consider ca este idle.
Ar cumva-cumva si asta o idee. Dupa ce lansezi procesul, apelezi GetProcessTimes, sa zicem o data la 100 ms. Cand nu s-a mai adaugat nimic la timpii de procesor calculezi rezultatul.
Nu-mi dau seama cat de stralucita e solutia asta, n-am testat, s-ar putea sa spun tampenii, dar poti incerca.
Si atentie la infinituri: e posibil ca o aplicatie sa rasneasca tot timpul ceva in background.
Cum s-a mai spus de N ori aici, e greu de gasit o solutie unica la modul general.

Si inca ceva: Windows nu e un sitem in timp real deci masuratori de tipul pe care-l discutam aici nu sunt neaparat relevante.

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Startup application

Post by cristianamarie » 09 Jan 2011, 10:08

Ai nevoie de niste performance counters pentru counters collection, dar la tine e ceva custom.
Ce inseamna "a presupunem ca am o aplicatie "generala" care se afla la Startup, pe mine ma intereseaza sa aflu cu cat imi ingreuneaza aceasta aplicatie timpul de incarcare a sistemului de operare si sa imi dau seama daca imbunatesc sau nu acest timp scotand aplicatia de la startup. " ?
Poate acolo ai un exe foarte rapid, sa zicem un windows update, dar care dureaza mult pentru ca face mult HTTP. Azi poate merge instant ca nu am updates, miine aduce 100 de patchuri. E greu de masurat, altfel decit aplicatia insasi sa publice performance informations.
Nuclear launch detected

User avatar
Comodus
Junior
Junior
Posts: 25
Joined: 17 Jan 2009, 23:07
Judet: Braşov

Re: Startup application

Post by Comodus » 10 Jan 2011, 15:23

Da Ovidiu ai perfecta dreptate, treaba cu procesorul nu reprezinta o idee stralucita, si daca stau bine si ma gandesc ce se intampla
cu aplicatiile care ruleaza cu o prioritate mai mica(au access mai rar la procesor) sau cu applicatiile care imediat dupa initializare/incarcare
interactioneaza cu userul..., si asa cum s-a discutat aici e o problema prea generala la care greu se gaseste o solutie viabila.
Numai bine!
A wise man has once said that “we are jumping to conclusions when we are bored of thinking".

Post Reply