2015-09-01 10 views
8

Zauważyłem, że mój czas pracy na baterii jest znacznie gorszy na moim laptopie, kiedy tylko mam otwarte delphi 2010. Kiedy śledzę powercfg/energy, pokazuje (między innymi), że bds.exe zażądał mniejszej rozdzielczości zegara niż domyślna 15.6ms.dlaczego delphi ide zwiększa rozdzielczość timera platformy Windows?

Current Timer Resolution (100ns units) 10006 
Maximum Timer Period (100ns units) 156250 


Requested Period 10000 
Requesting Process ID 7996 
Requesting Process Path \Device\HarddiskVolume2\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\bds.exe 

Czy delphi ma dobry powód, aby zmienić rozdzielczość timera platformy? Czy najnowsze wersje idei mają takie samo zachowanie?

+0

Nie widzę tego z XE7. Naprawdę nie widzę, jak to jest problem z 5-letnią wersją oprogramowania, chyba że masz na myśli to, że aplikacje opracowane z IDE wykazują to samo zachowanie. Problem z czymś podobnym do Delphi polega na tym, że można to zrobić przez kontrolę zewnętrzną. To niekoniecznie IDE zmienia rzeczy. – Graymatter

+0

@Graymatter Widzę to dla XE7. Firefox prosi też o 1ms, zauważyłem. Spodziewam się, że powodem jest sprawienie, by "Sleep" ms było dokładne. –

+0

@J Ok, widzę to teraz. Nie wiem, jak za pierwszym razem tęskniłem. Nadal uważam, że jest to niewielki problem. Narzędzia programistyczne to nie to samo, co zwykłe aplikacje. Debugery, profile itp. Wszystko to sprawia, że ​​stoją z boku. – Graymatter

Odpowiedz

14

IDE używa bardzo starej wersji VirtualTrees.pas dla ProjectManager, StructureView i Log-Window. Ta wersja wywołuje timeBeginPeriod w swojej funkcji InitializeGlobalStructures i ustawia rozdzielczość timera na minimum (1). Jest resetowany w bloku jednostki finalization.

VirtualTrees zmieniło to zachowanie z tym popełnić:

2013-09-20 21:40:21: No longer changing timer resolution globally (#365) 

Ale IDE nadal korzysta z bardzo starej wersji, która nie jest nawet przy użyciu UnicodeString ale WideString. Więc nie był aktualizowany od Delphi 2007.

+0

Dzięki Andreas! Przypuszczam, że jeśli ustawię timer z powrotem po otwarciu IDE, może mi się trochę lepiej wydłużyć żywotność baterii – Joe

+0

Czy znasz przyczynę, dla której widok drzewa wirtualnego zmienił rozdzielczość zegara? Czy byłoby bezpiecznie po prostu zmienić go z powrotem, podczas gdy IDE działa lub może mieć negatywne skutki na Virtual Tree Views? – dummzeuch

+0

@dummzeuch Kod skomentował: 'Określ użyteczną rozdzielczość zegara dla timeGetTime'. Ale tylko oryginalny autor (Mike Lischke) może być w stanie odpowiedzieć na to pytanie. –

Powiązane problemy