Calcul de la suite de Fibonacci en c# avec parallelFX
Pré requis :
Framework 3.5
ParallelFX ctp juin 2008
Principe du programme :
La suite de Fibonacci est classique en math et en programmation car elle permet d'introduire et d'expliquer la récursivité. Cette suite est remarquable dans le sens où elle permet de
calculer le nombre d'or = F(n+1)/F(n)
La fonction récursive est très simple en c# :
static int fibonacci(int entree)
{
if (entree <= 1)
return 1;
else
return fibonacci(entree - 2) + fibonacci(entree - 1);
}
Principe de ParallelFX :
1 - Référence sur l'assembly System.Threading
2 - Using System.Threading
3 - Utilisation de Parallel.For (To, From, delegate (int i) pour calculer les 40 premiers nombres de la suite.
Le programme ci-dessous calcule les 40 premiers nombres selon 2 méthodes :
- la méthode classique monothreadée avec une boucle for
- une méthode multithreadée avec une boucle Parallel.For
Les temps de traitement et les threads sont affichés.
Aperçu de JEE 6
On commence à entrevoir le contenu du futur JEE 6.
L'un des points les plus importants est l'abandon du sacro-saint principe de compatibilité éternelle; cette compatibilité ayant conduit à alourdir considérablement JEE. Dans JEE6,
certaines API vont être supprimées ou plus exactement ne feront plus partie de la spécification (libre aux serveurs d'applications de les implémenter ou non).
Parmi les API dans le collimateur :
- JAX-RPC
- EJB 2 CMP
- JAXR
- JSR 88 et JSR 77
C'est plutôt une bonne nouvelle car depuis 1999, JEE n'a cessé de grossir. Par contre, il faudra modifier les applications qui utilisaient ces fonctionnalités ou faire pression sur les éditeurs
pour les conserver.
Ref :
http://www.theserverside.com/tt/articles/article.tss?l=JavaEE6Overview
Mythes et réalités sur l'utilisation des CPUs
On n'entend souvent (surtout de la part des managers), qu'avoir des processeurs quadcore ne sert à rien car les logiciels actuels ne savent pas utiliser toute la puissance des coeurs. Cela permet souvent de légitimer une faible utilisation des ressources processeurs sur les serveurs x86 x64. Pourtant c'est faux!
Exemple 1 : Un programme de calcul, par exemple, mono threadé consomme 100% d’un cœur (physique ou logique). Si je suis capable d’exécuter n fois le programme en simultané alors je consommerai 100% (ou pas très loin) des n cœurs du serveur. C’est le but des architectures en grille.
Exemple 2 : la virtualisation qui permet de multiplier les environnements sur un même serveur physique et qui permet de mieux utiliser les ressources CPU (et RAM).
Exemple 3 : la programmation multi-threadée classique. Par exemple en c#, comment calculer la suite de Fibonacci via un pool de threads. Notons que cette méthode permet d’accélérer le traitement du calcul.
Exemple 4 : Parallel FX l’API de Microsoft qui permet de paralléliser les traitements dans un programme. Elle fournit un ensemble de fonctions et outils pour permettre d’utiliser toute la puissance des processeurs d’une machine. Les développeurs Microsoft ont mis en œuvre les fonctions de System.Threading dans un programme de calcul et d’affichage de l’ensemble de Mandelbrot.
Autant d’exemples qui montrent que la faible utilisation des ressources CPU dans le monde x86 n’est pas une fatalité...
Références PFX
http://blogs.msdn.com/pfxteam/archive/2008/06/06/8579067.aspx
http://en.wikipedia.org/wiki/Parallel_FX_LibraryOutil d'aide au prototypage
La phase de prototypage est nécessaire dans tout projet d'envergure. Elle sert souvent de support à la validation
du projet et des éléments financiers. Un projet bien présenté est un projet à demi accepté !
Fabrice Marguerie a construit une liste recensant ces outils.
A consulter d'urgence sur son blog !