Zauważyłem, że kiedy program Excel 2007 (i prawdopodobnie wcześniejsze wersje) skupia się na oknie, program Excel działa z pełną prędkością, co oznacza, że pliki otwierają się szybko, a makra VBA działają szybko.
Jeśli okno programu Excel traci fokus, priorytet wątku programu Excel wydaje się gwałtownie spadać, a duże pliki, które otwierały się po powolnym przesunięciu fokusa, a skomplikowane makra VBA zajmują dużo czasu.
Czy istnieje sposób na utrzymanie wysokiego poziomu priorytetu programu Excel niezależnie od tego, czy jest on skoncentrowany, czy nie?
Wiem, że mógłbym sztucznie zwiększyć priorytet wątku za pomocą Menedżera zadań, ale nie jestem pewien, jakie efekty domina mogą mieć to dla moich arkuszy kalkulacyjnych lub systemu operacyjnego.
Mój system to szybki dwurdzeniowy z 4 GB pamięci RAM i działa w systemie Vista 64.
EDYCJA W CELU WYJAŚNIENIA:
Mój problem nie polega po prostu na podniesieniu priorytetu procesu programu Excel za pomocą Menedżera zadań, ponieważ wpływa to tylko na program Excel, gdy jest on skupiony na oknie.
Chodzi o to, co dzieje się, gdy Excel traci fokus okna.
Z obszernego korzystania z programu Excel wydaje się, że z założenia celowo obniża swój priorytet procesu, gdy okno programu Excel nie jest aktywne.
Ustawienie wyższego priorytetu dla procesu Excela nie powstrzymuje tego - to daje Excelowi wyższy priorytet procesu tylko wtedy, gdy ma fokus, ale nadal gwałtownie spada, gdy traci fokus.
W normalnym użyciu programu Excel (prawdopodobnie 99% wszystkich osób korzystających z niego) nie zauważyłbyś tego efektu, ale z ogromnym arkuszem kalkulacyjnym (myślę, że około 2000 arkuszy) i złożonymi makrami VBA, których wykonanie zajmuje kilka minut, efekt jest bardzo zauważalny.
Idealnie, potrzebuję go, aby zachować ten sam priorytet wątku, niezależnie od tego, czy okno programu Excel jest skoncentrowane.
Do tej pory siedziałem kilka minut przed komputerem podczas przetwarzania, aby przypadkowo nie kliknąć okna programu Excel, gdy jest chrupiące, ale miałem tylko nadzieję, że istnieje lepsze rozwiązanie ... być może jakiś hack rejestru?
EDYTOWAĆ:
Pod tym linkiem znalazłem tylko jedną wzmiankę o tym problemie w sieci
To jest odpowiedni cytat ...
Jeśli jednak sprawię, że okno programu Excel 2000 będzie widoczne dla użytkownika, a okno pozostanie aktywne, makra będą działać z oczekiwaną szybkością. Ponownie okno musi być aktywne lub makro zwolni ponownie do indeksowania.
źródło
Odpowiedzi:
Wersje inne niż serwerowe Windows domyślnie zapewniają priorytetowe przyspieszenie procesu pierwszoplanowego. Gdy przesuniesz Excela w tło, traci on moc, jaką wcześniej miał na pierwszym planie; niektóre inne programy zamiast tego zyskują priorytet.
Możesz zmienić ustawienie, aby programy nie otrzymywały tego wzmocnienia. Uwaga: nie wpłynie to tylko na program Excel, ale na każdy program, który w innym przypadku kwalifikowałby się do ulepszenia.
Oto jak dostosować ustawienia w systemie Windows XP:
Kliknij kartę Zaawansowane . Pierwszy panel to Planowanie procesorów :
Zmień go z domyślnego „Programy” na „Usługi działające w tle”, a program Excel powinien zachowywać się bliżej tego, co chcesz, gdy jest w tle.
źródło
Nie sądzę, aby w twoim przypadku wystąpił problem ze zmianą priorytetu procesu programu Excel na Above Normal . To nie powinno stanowić problemu.
Nie rób najwyższego poziomu , ponieważ będzie konkurował z procesami systemowymi.
Nie zawieszaj go, bo możesz zawiesić na nim inne rzeczy!
Jeśli korzystasz z Eksploratora procesów Marka Russinowicza , aby sprawdzić priorytety procesów uruchomionych w systemie. Pokazuje następujące wartości priorytetów i ich powiązanie.
Możesz użyć eksploratora procesów i spróbować ponownie ustalić priorytety dla programu Excel .
Przenieś go powyżej 8 , ale nie przekraczaj 12
powyżej normalnej przy 10, powinienem się spodziewać.
W ten sam sposób, jeśli uważasz, że jakiś proces zajmuje zbyt dużo czasu procesora, gdy nie jest skupiony, możesz obniżyć jego priorytet aż do Bezczynności .
Zwykle używam do tego tej techniki.
źródło
am
patrząc na ten szczegół, ale mój zrozumienia jest to, że okno w centrum uwagi będzie zwykle wNormal
priorytecie (domyślnie) i po przeniesieniuExcel
doAbove Normal
pierwszeństwa, powinien być uruchomiony na wyższym priorytecie niż aktywnym oknie. Ale przy niższym priorytecie procesy systemowe - tam, gdzie chcesz.Należy tu rozważyć kilka różnych rzeczy: Po zmianie priorytetu procesu ten priorytet podstawowy jest dziedziczony przez wszystkie jego wątki i inne uruchamiane przez niego procesy. Obecny priorytet składa się z priorytetu podstawowego i szeregu czynników, które decydują o tym, czy należy go zwiększyć, czy nie - bycie na pierwszym planie niekoniecznie zwiększa priorytet, ale rzeczy takie jak wyjście ze stanu oczekiwania lub wykonanie operacji zamówienia krótkotrwały tymczasowy impuls.
Sugerowałbym, aby uruchomienie procesu programu Excel z wysokim priorytetem podczas pracy nad tymi bardzo intensywnymi skoroszytami mogło mieć sens, i powiedziałbym, że drugi skrót o nazwie „Excel o wysokim priorytecie” może być dobrym sposobem na zrobienie tego. Najpierw utwórz jednowierszowy plik wsadowy, który uruchamia polecenie start z odpowiednimi przełącznikami, np .:
start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE"
(w 64-bitowej wersji systemu Windows byłoby to możliwe,
start "high priority excel" /max /high "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE"
chyba że używasz również 64-bitowej wersji pakietu Office, która jest dostępna tylko od 2010 rokustart "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"
). Pamiętaj, że tytuł okna może być dowolny, ale nie jest opcjonalny.Teraz zapisz to jako np. HiperExcel.cmd gdzieś pod ręką - może folder biurowy, folder ac: \ scripts lub coś takiego, lub folder domowy, aby mógł wędrować z urządzenia do komputera. Utwórz nowy skrót, który wskazuje ten plik, ustaw folder początkowy jako folder, w którym plik jest przechowywany. Wybierz ikonę pliku - przejrzyj plik wykonywalny Excel.exe, a następnie wybierz coś innego niż zwykła ikona Excel .
Kliknij nowy skrót, aby wywołać program Excel działający jako proces o wysokim priorytecie, z podstawowym priorytetem 13, a podczas działania prawdopodobnie uzyska maksymalny priorytet dla procesów poza czasem rzeczywistym wynoszący 15. Nawet jeśli coś innego zostanie przyspieszone, nie powinien mieć wyższego priorytetu. Zauważ, że proces pierwszego planu NIE ma pierwszeństwa tylko dlatego, że jest na pierwszym planie (nie od NT4.0). Więc, co się dzieje?
Ponownie wykorzystaj to, co do tej pory znaliśmy: procesy na zmianę następują zgodnie z priorytetem, ale nie do absolutnego wykluczenia procesów o niższym priorytecie (no cóż, naprawdę wątki, ale pozwalamy zachować procesy w celu ułatwienia dyskusji). Co się stanie, gdy proces uzyska swoją „kolej”? Może działać przez jednostkę czasu zwaną kwantową. Jak długo trwa kwant? To zależy...
W tym momencie proces pierwszego planu może zużywać więcej zasobów - gdy otrzyma zwrot, ten zwrot może trwać trzy razy dłużej niż zwroty procesów w tle. Więc może nie dostać się bardzo często (w zależności od priorytetu), ale kiedy to zrobi, będzie go zatrzymywał na dłużej.
Możesz wybrać użycie krótkich lub długich kwantów (domyślnie brak na systemie operacyjnym stacji roboczej, długi na serwerach) i zwiększenie lub przyspieszenie procesu pierwszego planu (zmienne dla w / s, domyślnie ustawione dla serwerów), a jeśli zwiększone, przez ile (efektywnie do 3 razy). Problem polega na tym, że jeśli zdecydujesz się zmienić mnożnik, w rezultacie wszystko będzie miało bardzo krótkie wartości kwantowe, podczas gdy jeśli wyłączysz zwiększanie pierwszego planu, wszystko stanie się dłuższe, ale równe. Jeśli go wyłączysz, usługi Windows w tle będą miały taką samą ilość jak aplikacje użytkownika, co może nie być idealne. Musisz ustawić wartość w rejestrze na: HKLM \ System \ CurrentControlSet \ Control \ PriorityControl \ Win32PrioritySeparation, używając maski bitowej. Aby to ułatwić, najbardziej prawdopodobne wartości, które powinny być:
2 = wartość domyślna, oznacza użycie wartości domyślnych z maksymalnym wzmocnieniem. wartości domyślne na O / S stacji roboczej są krótkie i zmienne. 8 = ustalone, krótkie kwantowe (pierwszy plan i tło są równe) 40 (dziesiętny, x28 szesnastkowy) = ustalone i długie (jest to to samo, co ustawienia domyślne serwera) 36 (dziesiętny, x24 szesnastkowy) = krótkie, zmienne, ale minimalne wzmocnienie dla pierwszego planu . Myślę, że jest to ten, który prawdopodobnie przyniesie największe korzyści w zmniejszeniu ilości konkurujących innych aplikacji, ale pozwoli Excelowi uzyskać więcej zasobów na pierwszym planie (o ile również podniesiesz jego priorytet).
Spróbuj i przekonaj się, mam nadzieję, że to pomoże - Twój przebieg może się oczywiście różnić.
Poza tym: wiele innych aplikacji lub procesów nie ma procesora jako wąskiego gardła - twoje przykłady synchronizacji Outlooka i przeglądania IE prawdopodobnie mają sieć, a być może dla Outlooka niektóre dyskowe operacje we / wy jako ważniejsze czynniki ich prędkości, więc czy dostaną wzmocnienie pierwszego planu, czy nie, wpływ widocznej wydajności jest prawdopodobnie poniżej tego, co widać po prostej obserwacji.
źródło
Nie ma problemu ze zwiększeniem priorytetu procesu do „powyżej normalnego” lub „wysokiego”, po prostu nie ustawiaj go na „w czasie rzeczywistym”. Nie mogę ci pomóc z Excelem szczególnie przykro.
źródło
Możliwe jest, że manipulacja priorytetami nie jest wykonywana przez program Excel, ale przez sam system Windows. Windows ma mechanizm, w którym priorytet procesów z oknami na pierwszym planie jest zwiększony; więc kiedy Excel traci fokus, jego priorytet wraca do normy (która jest nieco niższa).
Jedyną stroną w MSDN, którą mogłem znaleźć na ten temat za pomocą szybkiego wyszukiwania, są Priorytety :
Z tego, co słyszałem, są sposoby na wyłączenie tego priorytetowego wzmocnienia.
źródło
Po prostu spróbuj, to zadziałało dla mnie.
Niezbyt przyjemny sposób, ale tak naprawdę podwoił moją prędkość obliczeniową! Niesamowity! (ale sprawdzę wyniki, nie jestem pewien ...)
Formularz użytkownika musi znajdować się na środku ekranu w rozdzielczości 1024 * 768. Wystarczy wysłać przez oprogramowanie prawym przyciskiem myszy formularz użytkownika.
Pełne obliczenia, ale nie używaj komputera podczas obliczeń (uruchamiaj inne programy, Windows ..).
Po prostu spróbuj mi powiedzieć, jak Ci się udało!
źródło
Po długiej nocy pełnej kalkulacji prędkości i po sprawdzeniu wyniki tego ranka były ... całkowicie błędne.
Myślę więc, że to tylko błąd, obliczenia nie są właściwie wykonane.
Kliknięcie formularza użytkownika w obliczeniach tylko przyspiesza szybkość procesu, ale nie do końca ponownie oblicza arkusz poza nim. Wyjaśniłem, że byłem w czasie rzeczywistym z prio.
Kolejną miłą rzeczą jest dostosowanie zadania procesu za pomocą prio_x64_199_2367.exe, http://softziz.com/2010/11/prio-64-bit-1-9-9/
Zapisuje to priorytet procesu zdefiniowany za pomocą CTRL ALT DEL, wewnątrz menedżera zadań, do przyszłych zastosowań.
Z poważaniem,
Jan
źródło