Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 2008
-
20 août 2007 à 15:47
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 2008
-
20 août 2007 à 16:49
Bonjour,
dans le cadre d'une fonction qui applique un filtre "brightness" sur une image, j'ai remplacé mon code qui était au départ 100% GDI+ par du code "unsafe".
Au départ, j'était assez réticent à l'utilisation de code unsafe, mais vu le gain de performance (le ration est à plus de 1:150...) je vais certainement garder le code unsafe...
Mais par simple curiosité, quels sont les inconvénients (s'il y en a) à inclure du code unsafe?
Le seul que je voit, c'est l'absence de contrôle du CLR sur les types, la mémoire, etc, mais à priori une fois que le code est testé/validé ça n'est plus vraiment un problème (ca revient -quasiment- à redescendre au niveau du C++, ce qui ne me dérange pas plus que ça).
Y'a t'il autre chose a craindre ou est ce que mes réticences à mettre du unsafe là où c'est nécessaire sont infondées?
<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 20 août 2007 à 16:03
Salut,
En gros la règle est de ne pas mettre de code unsafe sauf si c'est vraiment nécessaire.
Dans ton cas, si les performances sont un des aspects prioritaires du projet, le code unsafe est justifiable.
La BCL .NET elle même contient du code unsafe, le tout est de ne pas en mettre là où ce n'est pas réellement nécessaire.
Le terme unsafe n'est pas forcément à prendre dans le sens "dangereux", mais plutôt dans le sens "non vérifiable". Il n'y aura notamment pas de vérification de sécurité sur du code unsafe. Celà voudra aussi dire que ton assembly devra bénéficier d'un niveau de confiance suffisamment élevé, sinon le code ne s'executera pas.
Mais il garde aussi un aspect dangereux car tu ne dois pas oublier d'effectuer les vérifications d'usage sur les tailles de tableaux, de ne pas rater la gestion de la mémoire, faire attention que les objets pointés ne soient pas libérés etc etc (bref, les joies du C++)
Si tu veux en savoir plus, tu devrais regarder la section unsafe des specs du langage C#.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 20 août 2007 à 16:49
Il faudrait que je vérifie l'impact sur le niveau de confiance requis pour l'assembly, mais en l'occurence j'arrive à la déployer avec ClickOnce (qui a l'air assez restrictif quand aux droits fournis à l'application) et le code unsafe ne pause pas de problèmes...(ça s'install même sous Vista, c'est dire).
<hr size="2" width="100%" />
Working as designed
www.nikoui.fr