Bonjour à tous,
Je voudrais poser ici une question qui me turlupine depuis un bon moment déjà... MATLAB est extrêment rapide pour tout calcul lié à l'algèbre linéaire (produit, inversion, étude du spectre, ...) et semble utiliser des librairies écrites en FORTRAN comme BLAS et LAPACK pour toutes ces implémentations (cf documentation de MATLAB). Alors j'ai tenté par curiosité d'installer BLAS et LAPACK ainsi qu'un wrapper pour le C++ nommé CPPLAPACK et de faire un simple produite matriciel en double précision de 2 matrices 1000*1000... et là le résultat m'étonne : à peu près 2.8 secondes sur le programme C (je précise que je n'utilise dans ce code que les fonctionnalités de bases de CPPLAPACK, aucun code personnel) et seulement 0.8 seconde pour MATLAB sur un calcul semblable (à la différence des initialisations près...) - près de 4 fois plus rapide !!! Quelqu'un pourrait-il me dire comment fait MATLAB pour être si rapide ? pourquoi les libraires sur lesquelles il est basé ne me permettent pas d'être aussi rapide en C ou C++ alors qu'elles le permettent sous MATLAB ?? J'ai regardé les implémentations des produits matriciels finalement assez basiques (je m'attendais à du Strassen ou du Coppersmith...) et je ne trouve pas les raisons de ces différences... Si quelqu'un a une idée je suis preneur !