J'ai remarqué que lorsque Excel 2007 (et probablement les versions antérieures) a le focus sur la fenêtre, Excel s'exécute à pleine vitesse, ce qui signifie que les fichiers s'ouvrent rapidement et que les macros VBA à exécution longue s'exécutent rapidement.
Si la fenêtre Excel perd le focus, la priorité des threads d'Excel semble diminuer considérablement et les fichiers volumineux qui s'ouvraient lorsque vous avez déplacé le focus lentement, et les macros VBA complexes prennent beaucoup de temps.
Existe-t-il un moyen de maintenir la priorité Excel élevée, qu'elle soit ciblée ou non?
Je sais que je pourrais augmenter artificiellement la priorité des threads via le Gestionnaire des tâches, mais je ne sais pas quels effets d'entraînement cela pourrait avoir sur mes feuilles de calcul ou mon système d'exploitation.
Mon système est un double cœur rapide avec 4 Go de RAM et fonctionne sous Vista 64.
MODIFIER POUR LA CLARIFICATION:
Mon problème ne concerne pas seulement augmenter la priorité du processus Excel par le Gestionnaire des tâches car cela ne touche Excel quand il a le focus de la fenêtre.
Le point est ce qui se passe lorsque Excel perd le focus de la fenêtre.
De l'utilisation intensive d'Excel, il semble que, de par sa conception , il diminue délibérément sa propre priorité de processus lorsque la fenêtre Excel n'a pas le focus.
La définition d'une priorité plus élevée pour le processus Excel n'empêche pas cela de se produire - cela n'accorde à Excel une priorité de processus plus élevée que lorsqu'il a le focus, mais il diminue encore considérablement lorsqu'il perd le focus.
Dans une utilisation Excel normale (probablement 99% de tous ceux qui l'utilisent), vous ne remarqueriez pas cet effet mais avec une feuille de calcul massive (environ 2000 feuilles de calcul, je pense) et des macros VBA complexes qui prennent quelques minutes à exécuter, l'effet est très perceptible.
Idéalement, j'en ai besoin pour conserver la même priorité de thread, que la fenêtre Excel soit focalisée ou non.
Jusqu'à présent, je viens de m'asseoir depuis l'ordinateur pendant quelques minutes pendant le traitement afin de ne pas cliquer accidentellement sur la fenêtre Excel quand elle se rétrécit, mais j'espérais juste qu'il y avait une meilleure solution ... peut-être un hack de registre quelconque?
ÉDITER:
Je n'ai jamais trouvé qu'une autre mention de ce problème sur le net à ce lien
Ceci est la citation pertinente ...
Cependant, si je rend la fenêtre Excel 2000 visible pour l'utilisateur et que je garde également la fenêtre au point, les macros s'exécutent à leur vitesse attendue. Encore une fois, la fenêtre doit avoir le focus ou la macro ralentit à nouveau.
la source
Réponses:
Les éditions non serveur de Windows, par défaut, fournissent un boost prioritaire au processus de premier plan. Lorsque vous poussez Excel en arrière-plan, il perd le boost qu'il avait précédemment au premier plan; un autre programme gagne à la place le boost de priorité.
Vous pouvez modifier un paramètre afin que les programmes n'obtiennent plus ce boost. Remarque: Cela n'affectera pas seulement Excel, mais tout programme qui aurait autrement été qualifié pour un boost.
Voici comment modifier le paramètre dans Windows XP:
Cliquez sur l' onglet Avancé . Le premier panneau est Planification du processeur :
Modifiez-le par défaut de "Programmes" en "Services d'arrière-plan" et cela devrait amener Excel à se comporter plus près de la façon dont vous le souhaitez lorsqu'il est en arrière-plan.
la source
Je ne pense pas qu'il y ait un problème avec la modification de la priorité du processus Excel à Au-dessus de la normale dans votre cas. Cela ne devrait pas poser de problème.
Ne le faites pas le plus haut , où il sera en concurrence avec les processus système.
Ne le suspendez pas, ou vous pouvez faire suspendre d'autres choses dessus!
Si vous utilisez Mark Russinovich de Process Explorer
pour examiner les priorités des processus en cours d' exécution sur votre système.
Il montre les valeurs de priorité suivantes et leur association.
Vous pouvez utiliser l' Explorateur de processus et essayer une nouvelle hiérarchisation pour Excel .
Déplacez-le au-dessus de 8 , mais n'allez pas au-delà de 12 au-
dessus de la normale à 10 devrait faire, je pense.
Dans le même ordre d'idées, si vous pensez qu'un processus prend trop de temps processeur alors qu'il n'est pas au point, vous pouvez réduire sa priorité jusqu'à Idle .
J'utilise habituellement cette technique pour cela.
la source
am
recherche ce détail, mais ma compréhension est que la fenêtre mise au point sera généralementNormal
prioritaire (par défaut) et une fois que vous passezExcel
à laAbove Normal
priorité, elle devrait fonctionner à une priorité plus élevée que la fenêtre focalisée. Mais, à une priorité inférieure, le système traite - c'est là que vous voulez qu'il soit.Il y a deux ou trois choses différentes à considérer ici: lorsque vous changez la priorité d'un processus, cette priorité de base est héritée par tous ses threads et les autres processus qu'elle démarre. La priorité actuelle est composée de la priorité de base et d'un certain nombre de facteurs qui déterminent si elle doit être augmentée ou non - le fait d'être au premier plan n'augmente pas nécessairement la priorité, mais des choses comme sortir d'un état d'attente ou faire des IO peuvent donner un petit coup de pouce temporaire.
Je dirais que l'exécution de votre processus Excel avec une priorité élevée lorsque vous travaillez sur ces classeurs très intensifs pourrait avoir un sens, et je dirais qu'un deuxième raccourci appelé "Excel haute priorité" pourrait être un bon moyen de le faire. Créez d'abord un fichier batch d'une ligne qui exécute la commande de démarrage avec les commutateurs appropriés, par exemple:
start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE"
(sur une version 64 bits de Windows, ce serait à
start "high priority excel" /max /high "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE"
moins que vous exécutiez également une version 64 bits d'Office, qui n'est disponible qu'à partir de 2010start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"
) Notez que le titre de la fenêtre peut être tout ce que vous aimez, mais n'est pas facultatif.Maintenant, enregistrez-le comme par exemple HiperExcel.cmd quelque part à portée de main - peut-être le dossier de bureau, ou le dossier ac: \ scripts ou somesuch, ou votre dossier personnel afin que cela puisse se déplacer de machine à machine. Créez un nouveau raccourci qui pointe vers ce fichier, faites du dossier de démarrage le dossier où le fichier est conservé. Choisissez une icône pour le fichier - recherchez l'exécutable Excel.exe, puis choisissez autre chose que l'icône Excel habituelle pour plus de clarté.
Cliquez sur votre nouveau raccourci et il appellera Excel en cours d'exécution en tant que processus de haute priorité, avec une priorité de base de 13 et lors de son exécution, il obtiendra probablement la priorité maximale pour les processus en temps non réel de 15. Même si quelque chose d'autre reçoit un coup de pouce, il ne devrait pas avoir une priorité plus élevée. Notez que le processus de premier plan n'obtient PAS un boost de priorité uniquement pour être au premier plan (pas depuis NT4.0). Alors, quoi de neuf?
Récapitulons ce que nous savons jusqu'à présent: les processus se relaient en fonction de la priorité, mais pas à l'exclusion absolue des processus de priorité inférieure (enfin, les threads vraiment, mais permettent de garder les choses aux processus pour faciliter la discussion). Que se passe-t-il lorsqu'un processus obtient son «tour»? Il peut fonctionner pendant une unité de temps appelée quantum. Combien de temps dure un quantum? Ça dépend...
C'est là que le processus de premier plan utilise plus de ressources - lorsqu'il obtient un tour, ce tour peut durer trois fois plus longtemps que les tours des processus en arrière-plan. Il peut donc ne pas être utilisé très souvent (selon la priorité), mais lorsqu'il le fait, il le monopolise plus longtemps.
Vous pouvez choisir d'utiliser des quantums courts ou longs (la valeur par défaut est courte sur le système d'exploitation de la station de travail, longue sur les serveurs) et d'avoir le processus de premier plan boosté ou non (variable pour w / s, fixé pour les serveurs par défaut), et si boosté, par combien (effectivement jusqu'à 3 fois). Maintenant, la partie délicate de cela est que si vous choisissez de changer le multiplicateur, vous vous retrouvez avec tout ce qui a des valeurs très courtes pour le quantum, alors que si vous désactivez le renforcement au premier plan, tout devient plus long mais égal. Si vous le désactivez bien sûr, les services Windows en arrière-plan obtiennent le même quantum que vos applications utilisateur, ce qui n'est peut-être pas idéal. Vous devez définir la valeur dans le registre à: HKLM \ System \ CurrentControlSet \ Control \ PriorityControl \ Win32PrioritySeparation, à l'aide d'un masque de bits. Pour faciliter les choses, les valeurs les plus probables que vous souhaiteriez sont:
2 = valeur par défaut, signifie utiliser les valeurs par défaut avec un boost maximum. les valeurs par défaut sur le poste de travail O / S sont courtes et variables. 8 = fixe, quantum court (premier plan et arrière-plan sont égaux) 40 (décimal, x28 hex) = fixe et long (c'est la même chose que les valeurs par défaut du serveur) 36 (décimal, x24 hex) = court, variable mais un boost minimal pour le processus de premier plan . Je pense que c'est celui qui vous donnera probablement le plus d'avantages pour réduire la quantité de concurrence des autres applications, mais permettra à Excel d'obtenir plus de ressources au premier plan (tant que vous augmentez également sa priorité).
Essayez-le et voyez, j'espère que cela aide - votre kilométrage peut bien sûr varier.
Mis à part: de nombreuses autres applications ou processus n'ont pas le CPU comme goulot d'étranglement - vos exemples de synchronisation Outlook et de navigation IE ont probablement le réseau, et peut-être pour Outlook certains disques IO comme facteurs plus importants de leur vitesse, donc s'ils obtiennent un Boost de premier plan ou non, l'impact sur les performances visibles est probablement inférieur à ce que vous pouvez voir par simple observation.
la source
Il n'y a aucun problème à augmenter la priorité d'un processus à "au-dessus de la normale" ou à "élevé", ne le réglez pas sur "temps réel". Je ne peux pas vous aider avec Excel spécifiquement désolé.
la source
Il est possible que la manipulation prioritaire soit effectuée non pas par Excel, mais par Windows lui-même. Windows a un mécanisme où la priorité des processus avec des fenêtres au premier plan est augmentée; ainsi, lorsque Excel perd le focus, sa priorité revient à la normale (qui est légèrement inférieure).
La seule page sur MSDN que j'ai pu trouver à ce sujet avec une recherche rapide est Priority Boosts :
D'après ce que j'ai entendu, il existe des moyens de désactiver cette augmentation de priorité.
la source
Essayez ça, ça a marché pour moi.
Pas très sympa, mais ça a en fait juste doublé ma vitesse de calcul! Incroyable! (mais je vais vérifier les résultats, je n'en suis pas sûr ...)
Votre formulaire utilisateur doit être au centre de l'écran en 1024 * 768. Il suffit d'envoyer par logiciel un clic droit sur le formulaire utilisateur.
Calcul complet, mais n'utilisez pas votre ordinateur pendant qu'il calcule (lancez d'autres programmes, fenêtres ..).
Essayez de me dire comment cela a fonctionné pour vous!
la source
Après une longue nuit de calcul à pleine vitesse et après vérification, les résultats de ce matin étaient ... totalement faux.
Je pense donc que c'est juste un bug, les calculs ne sont pas correctement effectués.
Cliquer sur le formulaire utilisateur dans le calcul accélère simplement la vitesse du processus, mais ne recalcule pas complètement la feuille au-delà. Je précise que j'étais en temps réel avec prio.
Une autre bonne chose est de peaufiner la tâche de processus avec prio_x64_199_2367.exe, http://softziz.com/2010/11/prio-64-bit-1-9-9/
Cela enregistre votre priorité de processus définie avec CTRL ALT DEL, à l'intérieur du gestionnaire de tâches, pour des utilisations futures.
Sincères amitiés,
John
la source