Ich habe festgestellt, dass Excel mit voller Geschwindigkeit ausgeführt wird, wenn Excel 2007 (und wahrscheinlich frühere Versionen) den Fensterfokus hat. Dies bedeutet, dass Dateien schnell geöffnet werden und lang laufende VBA-Makros schnell ausgeführt werden.
Wenn das Excel-Fenster den Fokus verliert, scheint die Thread-Priorität von Excel dramatisch zu sinken, und große Dateien, die beim langsamen Öffnen des Fokus geöffnet wurden, und komplexe VBA-Makros benötigen lange Zeit.
Gibt es eine Möglichkeit, die Excel-Priorität hoch zu halten, unabhängig davon, ob sie fokussiert ist oder nicht?
Ich weiß, dass ich die Thread-Priorität durch den Task-Manager künstlich erhöhen kann, bin mir jedoch nicht sicher, welche Auswirkungen dies auf meine Tabellenkalkulationen oder mein Betriebssystem haben könnte.
Mein System ist ein schneller Dual Core mit 4 GB RAM und läuft unter Vista 64.
BEARBEITEN FÜR DIE ERKLÄRUNG:
Mein Problem besteht nicht nur darin, die Priorität des Excel-Prozesses über den Task-Manager zu erhöhen, da dies nur Excel betrifft, wenn es den Fensterfokus hat.
Der Punkt ist, was passiert, wenn Excel den Fensterfokus verliert.
Von Verwendung extensiv Excel scheint es , dass, durch Design , es seine eigenen Prozess Priorität bewusst senkt , wenn die Excel - Fenster Fokus nicht haben.
Das Festlegen einer höheren Priorität für den Excel-Prozess verhindert dies nicht. Es gibt Excel nur dann eine höhere Prozesspriorität, wenn es den Fokus hat, aber es sinkt immer noch dramatisch, wenn es den Fokus verliert.
Bei normaler Excel-Verwendung (wahrscheinlich 99% aller Benutzer) würden Sie diesen Effekt nicht bemerken, aber mit einer umfangreichen Tabelle (etwa 2000 Arbeitsblätter, glaube ich) und komplexen VBA-Makros, deren Ausführung einige Minuten dauert, ist der Effekt sehr groß bemerkbar.
Im Idealfall muss die gleiche Thread-Priorität beibehalten werden, unabhängig davon, ob das Excel-Fenster fokussiert ist.
Bis jetzt habe ich mich während der Verarbeitung einige Minuten vom Computer zurückgelehnt, damit ich nicht versehentlich auf das Excel-Fenster klicke, wenn es knirscht, aber ich hatte nur gehofft, dass es eine bessere Lösung gibt ... vielleicht eine Art Registry-Hack?
BEARBEITEN:
Ich habe unter diesem Link nur eine weitere Erwähnung dieses Problems im Internet gefunden
Dies ist das relevante Zitat ...
Wenn ich jedoch das Excel 2000-Fenster für den Benutzer sichtbar mache und das Fenster auch im Fokus halte, werden die Makros mit der erwarteten Geschwindigkeit ausgeführt. Auch hier muss das Fenster fokussiert sein, oder das Makro wird wieder langsamer.
quelle
Antworten:
Windows-Nicht-Server-Editionen bieten standardmäßig eine Prioritätssteigerung für den Vordergrundprozess. Wenn Sie Excel in den Hintergrund verschieben, verliert es den Boost, den es zuvor im Vordergrund hatte. Ein anderes Programm erhält stattdessen den Prioritätsschub.
Sie können eine Einstellung so ändern, dass Programme diesen Schub nicht mehr erhalten. Hinweis: Dies betrifft nicht nur Excel, sondern alle Programme, die sich ansonsten für einen Boost qualifiziert hätten.
So optimieren Sie die Einstellung in Windows XP:
Klicken Sie auf die Registerkarte Erweitert . Das erste Fenster ist Prozessorplanung :
Ändern Sie es von der Standardeinstellung "Programme" in "Hintergrunddienste" und es sollte dazu führen, dass sich Excel im Hintergrund näher an der gewünschten Weise verhält.
quelle
Ich glaube nicht, dass es in Ihrem Fall ein Problem gibt, die Priorität des Excel-Prozesses auf " Über Normal" zu ändern . Es sollte kein Problem sein.
Machen Sie es nicht am höchsten , wo es mit Systemprozessen konkurrieren wird.
Nicht aussetzen es, oder Sie können andere Dinge auf sie aufgehängt!
Wenn Sie den Prozess-Explorer von Mark Russinovich verwenden , um die Prioritäten der auf Ihrem System ausgeführten Prozesse zu überprüfen. Es zeigt die folgenden Prioritätswerte und ihre Zuordnung.
Sie können den Prozess-Explorer verwenden und versuchen, Excel neu zu priorisieren .
Bewegen Sie es über 8 , aber gehen Sie nicht über 12 hinaus.
Über Normal bei 10 sollte es reichen, erwarte ich.
Wenn Sie der Meinung sind, dass ein Prozess zu viel Prozessorzeit in Anspruch nimmt, während er nicht fokussiert ist, können Sie seine Priorität bis zum Leerlauf senken .
Ich benutze normalerweise diese Technik dafür.
quelle
am
suche nach diesem Detail, aber ich verstehe, dass das Fenster im Fokus normalerweiseNormal
Priorität hat (standardmäßig) und sobald SieExcel
zurAbove Normal
Priorität wechseln , sollte es mit einer höheren Priorität als das fokussierte Fenster ausgeführt werden. Aber mit niedrigerer Priorität als das System verarbeitet - genau dort, wo Sie es haben möchten.Hier sind verschiedene Dinge zu beachten: Wenn Sie die Priorität eines Prozesses ändern, wird diese Basispriorität von allen Threads und anderen von ihm gestarteten Prozessen geerbt. Die aktuelle Priorität setzt sich aus der Basispriorität und einer Reihe von Faktoren zusammen, die bestimmen, ob sie erhöht werden soll oder nicht - im Vordergrund zu sein, erhöht nicht unbedingt selbst die Priorität, aber Dinge wie das Verlassen eines Wartezustands oder das Ausführen von E / A können dies Geben Sie einen kurzen vorübergehenden Schub.
Ich würde vorschlagen, dass das Ausführen Ihres Excel-Prozesses mit hoher Priorität bei der Arbeit an diesen sehr intensiven Arbeitsmappen sinnvoll ist, und ich würde sagen, dass eine zweite Verknüpfung mit dem Namen "Excel mit hoher Priorität" eine gute Möglichkeit ist, dies zu tun. Erstellen Sie zunächst eine einzeilige Batchdatei, in der der Startbefehl mit den entsprechenden Schaltern ausgeführt wird, z.
start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE"
(Unter einer 64-Bit-Version von Windows ist dies nur möglich,
start "high priority excel" /max /high "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE"
wenn Sie auch eine 64-Bit-Version von Office ausführen, die nur ab 2010 verfügbar ist.start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"
) Beachten Sie, dass der Titel für das Fenster beliebig sein kann, jedoch nicht optional ist.Speichern Sie dies jetzt als z. B. HiperExcel.cmd an einem praktischen Ort - möglicherweise im Büroordner oder im Ordner ac: \ scripts oder so ähnlich oder in Ihrem Basisordner, damit dies von Maschine zu Maschine wechseln kann. Erstellen Sie eine neue Verknüpfung, die auf diese Datei verweist, und machen Sie den Startordner zum Ordner, in dem die Datei aufbewahrt wird. Wählen Sie ein Symbol für die Datei - navigieren Sie zur ausführbaren Datei Excel.exe und wählen Sie aus Gründen der Übersichtlichkeit etwas anderes als das übliche Excel-Symbol .
Klicken Sie auf Ihre neue Verknüpfung, um Excel aufzurufen, das als Prozess mit hoher Priorität mit einer Basispriorität von 13 ausgeführt wird. Wenn es ausgeführt wird, erhält es wahrscheinlich die maximale Priorität für Nicht-Echtzeit-Prozesse von 15. Selbst wenn etwas anderes einen Schub erhält, es sollte keine höhere Priorität bekommen. Beachten Sie, dass der Vordergrundprozess KEINE Prioritätserhöhung erhält, nur weil er im Vordergrund steht (nicht seit NT4.0). Also, was ist los?
Wiederholen Sie das, was wir bisher wissen: Prozesse wechseln sich nach Priorität ab, jedoch nicht unter absolutem Ausschluss von Prozessen mit niedrigerer Priorität (nun ja, Threads wirklich, aber lassen Sie die Dinge zur Erleichterung der Diskussion in Prozessen bleiben). Was passiert, wenn ein Prozess an die Reihe kommt? Es kann für eine Zeiteinheit laufen, die als Quanten bezeichnet wird. Wie lang ist ein Quantum? Es hängt davon ab, ob...
Hier kann der Vordergrundprozess mehr Ressourcen verbrauchen. Wenn er eine Runde bekommt, kann diese Runde dreimal länger dauern als die Runden der Hintergrundprozesse. Es wird also möglicherweise nicht sehr oft versucht (abhängig von der Priorität), aber wenn dies der Fall ist, wird es länger verschlungen.
Sie können wählen, ob Sie kurze oder lange Quanten verwenden möchten (Standard ist kurz auf dem Betriebssystem der Workstation, lang auf Servern) und ob der Vordergrundprozess verstärkt werden soll oder nicht (Variable für w / s, standardmäßig für Server festgelegt) und, falls erhöht, um wie viel (effektiv bis zu 3 mal). Der knifflige Teil davon ist, dass, wenn Sie den Multiplikator ändern, alles sehr kurze Quantenwerte hat, während beim Deaktivieren der Vordergrundverstärkung alles länger, aber gleich wird. Wenn Sie es natürlich deaktivieren, erhalten Windows-Hintergrunddienste das gleiche Quantum wie Ihre Benutzeranwendungen, was möglicherweise nicht ideal ist. Sie müssen den Wert in der Registrierung unter Verwendung einer Bitmaske unter HKLM \ System \ CurrentControlSet \ Control \ PriorityControl \ Win32PrioritySeparation festlegen. Zur Vereinfachung sind die wahrscheinlichsten Werte, die Sie möchten:
2 = Standardwert, bedeutet, dass Standardwerte mit maximalem Boost verwendet werden. Die Standardeinstellungen für Workstation-Betriebssysteme sind kurz und variabel. 8 = festes, kurzes Quantum (Vordergrund und Hintergrund sind gleich) 40 (dezimal, x28 hex) = fest und lang (dies entspricht den Serverstandards) 36 (dezimal, x24 hex) = kurz, variabel, aber minimale Verstärkung für den Vordergrundprozess . Ich denke, dies ist derjenige, der Ihnen wahrscheinlich den größten Vorteil bietet, wenn Sie die Menge reduzieren, mit der andere Apps konkurrieren, aber Excel ermöglicht, im Vordergrund mehr Ressourcen zu erhalten (solange Sie auch die Priorität erhöhen).
Probieren Sie es aus und sehen Sie, ich hoffe, das hilft - Ihr Kilometerstand kann natürlich variieren.
Nebenbei: Viele andere Anwendungen oder Prozesse haben nicht die CPU als Engpass - Ihre Beispiele für Outlook-Synchronisierung und IE-Browsing haben wahrscheinlich das Netzwerk und möglicherweise für Outlook einige Festplatten-E / A als wichtigere Faktoren für ihre Geschwindigkeit, also ob sie eine erhalten Vordergrundverstärkung oder nicht, der Einfluss auf die sichtbare Leistung liegt wahrscheinlich unter dem, was Sie durch einfache Beobachtung sehen können.
quelle
Es ist kein Problem, die Priorität eines Prozesses auf "über normal" oder "hoch" zu erhöhen. Setzen Sie sie einfach nicht auf "Echtzeit". Ich kann Ihnen nicht mit Excel helfen.
quelle
Möglicherweise wird die Prioritätsmanipulation nicht von Excel, sondern von Windows selbst durchgeführt. Windows verfügt über einen Mechanismus, mit dem die Priorität von Prozessen mit Fenstern im Vordergrund erhöht wird. Wenn Excel den Fokus verliert, wird seine Priorität wieder normal (etwas niedriger).
Die einzige Seite auf MSDN, die ich mit einer Schnellsuche dazu finden konnte, ist Priority Boosts :
Nach allem, was ich gehört habe, gibt es Möglichkeiten, diesen Prioritätsschub zu deaktivieren.
quelle
Probieren Sie es einfach aus, es hat bei mir funktioniert.
Nicht sehr schön, aber es hat meine Berechnungsgeschwindigkeit verdoppelt! Tolle! (aber ich werde die Ergebnisse überprüfen, nicht sicher über sie ...)
Ihr Benutzerformular muss sich in 1024 * 768 in der Mitte des Bildschirms befinden. Es wird einfach per Software ein Rechtsklick auf das Benutzerformular gesendet.
Vollständige Berechnung, aber verwenden Sie Ihren Computer nicht, während er berechnet (starten Sie andere Programme, Windows ..).
Versuchen Sie einfach und sagen Sie mir, wie es bei Ihnen funktioniert hat!
quelle
Nach einer langen Nacht voller Geschwindigkeitsberechnung und nach Überprüfung waren die Ergebnisse heute Morgen ... völlig falsch.
Ich denke, es ist nur ein Fehler, die Berechnungen werden nicht richtig durchgeführt.
Wenn Sie in der Berechnung auf das Benutzerformular klicken, wird nur die Prozessgeschwindigkeit beschleunigt, das darüber hinausgehende Blatt jedoch nicht vollständig neu berechnet. Ich war genau in Echtzeit mit Prio.
Eine weitere nette Sache ist, die Prozessaufgabe mit prio_x64_199_2367.exe, http://softziz.com/2010/11/prio-64-bit-1-9-9/ zu optimieren.
Dadurch wird Ihre mit STRG ALT DEL im Task-Manager definierte Prozesspriorität für zukünftige Verwendungen gespeichert.
Mit freundlichen Grüßen,
John
quelle