Programmation en C++/CLI ?
Je vous avais déjà contacté il y a plus de 3 mois sur les Winforms et le c++/CLI et entre temps je me suis pas mal documenté sur le sujet (surtout à l'aide de vos FAQ et qques ouvrages que j'ai potassé).
Je suis un "bleu" en Visual C++. Mais j'ai déjà construit 3 programmes en DELPHI, qui fonctionnent bien.
Ce sont des programmes "scientifiques" possédant comme dans tous ces types de programmes :
- une fenêtre pour l'entrée des données (et leurs modif si nécessaires) soit un "préprocesseur"
- Le Kernel, dans lequel le calcul s'effectue (calculs matriciels, et de résolutions d'équations du mouvement d'ensemble de points....)
- une fenêtre pour la sortie des résultats (et leurs impressions et graphes).
J'ai déjà programmé la fenêtre d'entrées (préprocesseur) (en C++/CLI) et ça marche pas mal. Je pense que pour les sorties je pourrais rester en C++/CLI pour les graphiques.
Maintenant, pour le KERNEL, j'ai un problème de temps d'execution; j'ai quelques questions à vous poser sur ces orientations.
1 - De ce que j'ai lu, si j'utilise le garbage collector les calculs seront moins rapides qu'avec le heap. Si oui, puis-je rester en C++/CLI et utiliser le c natif et des pointeurs (new, delete) du heap ou dois-je entourer mes parties calcul avec des #pragma unmanaged et #pragma managed. En gros, est-ce que le compilateur saura faire la part des choses entre les 2 "langages".
Pouvez-vous me donner un exemple très simple me montrant l'incrustation d'un code en c natif dans du c++/cli, ou est-ce impossible ?
2 - Quelle est la différence de temps d'execution entre 2 calculs matriciels dans les 2 langages en utilisant des pointeurs.
Si on ne peut pas mélanger les 2 "langages", je peux toujours créer 3 programmes que je lance successivement.
Pouvez-vous m'éclairer sur ce point, SVP.
J'espère que ma demande est claire.
Merci d'avance
Alfred
Eclaircissement sur ce sujet
D'accord, j'ai bien compris.
Si on crée un pointeur de tableau avec new, il sera dans le heap et sera utilisé comme un pointeur normal. Et tout ceci sera dans mon code en c++/cli.
J'ai appris que le compilateur crée du MSIL et non du code objet c++ natif.
Et donc saura-t-il faire la différence et au moment où il trouvera les instructions en natif (non managé) les compilera-t-il dans ce code ?
Pour forcer le compilateur à créer du code natif faut-il donc incruster le kernel (code de calcul à optimiser en temps) entre des directives # pragma unmanaged et # pragma managed ?
Alors si on ne force pas le compilateur à créer du code natif, il créera du MSIL !!!!
Tout cela s'embrouille dans ma tête.
Comment cela se passe-t-il dans la réalité ?
Pour ma part je voudrais rester en c++/cli pour l'utilisation des winforms qui me rappellent ce que j'avais avec les rad de delphi et la gestion des contrôles.
Je vous remercie, déjà pour vos réponses éclair
et attend la ou les réponses à ces nouvelles questions.
Alfred