Multithread de calcul dans excel est lent

Je me demandais si il existe un moyen de contrôle de calcul excel de telle sorte que plusieurs feuilles dans un WB sont recalculés en parallèle, tandis que les autres ne sont pas. Mon problème est que dans l'architecture actuelle, la séquence du processus de calcul que j'ai est trop long. La séquence est piloté à partir de VBA et va quelque chose comme ceci:
1) vba appelle un addin (excel-l'adn vb.net addin, qui contrôle un datareader et attachés de base de données)
2) addin renvoie les données de la feuille 1. Feuilles 2-3 sont recalculés en séquence (feuille 2, puis 3)
3) les feuilles de 4 à 10 sont recalculées dans l'ordre, mais étant donné que chaque indépendamment des liens uniquement vers la feuille 2, ils pourraient, en théorie, de recalculer en parallèle - droit? Mais comment faire cela?
4) commencer le processus avec l'appel de nouvelles données via vba addin décrite dans la section 1)

De l'exécution d'un sous-ensemble de données sur mon ordinateur portable (64 bits avec 32 bits d'excel, intel i7), il prend de 54,6 secondes. Fait intéressant, si j'éteins le multithreading, il prend de 25,8 secondes! De plus si je le lance sur une super machine rapide (2 x Intel Xeon X5570, quad-core “Nehalem” de l'architecture, de 64 bits avec 64 bits d'excel), il est plus lent que mon ordinateur portable, prise de 230seconds avec le multithreading ou 26 secondes sans.

Je me demande si il ya une meilleure façon que je pourrais faire de l'utilisation de processeurs multi-cœurs et le multithreading. La lenteur de bits s'affiche à nouveau calcul excel plutôt que le complément de la vitesse. Toutes les suggestions apprécié.

edit:
La description ci-dessus est un peu de simplification, Dans la réalité, j'ai aussi un processus itératif 'calc/coller-vallées/recalcul' processus qui s'exécute sur chacune des feuilles de 4 à 10 (l'itération produit jusqu'à ce que certains sensibilité requise est atteinte, et alors seulement, est la feuille de calcul). Je crois que ce qui fait courir un wb calculer sous la forme actuelle impraticable.

Feuilles de 4 à 10 sont identiques (sauf pour les codée en dur paramètres d'entrée) et n'ont pas de calcul des dépendances entre les l'un de l'autre. Si le processus de calcul (mentionné procédure d'itération et de la feuille calc) de chacun d'entre eux pourrait être fait en parallèle au lieu de séquentiellement, je pense que tout le processus serait beaucoup plus rapide.

Pour info, j'ai déjà effectué le plus évident de la rationalisation et de l'essai (rupture de formules, en séparant les fonctions volatiles, etc).

L'exécution de l'ensemble de mon jeu de données à travers le processus tel qu'il est, prend environ 16 heures, c'est pourquoi je suis désireux de trouver quelques moyens pour améliorer cette situation.

Merci!

InformationsquelleAutor Yugmorf | 2012-03-28