IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Générer du PDF en C# ou C++ ?


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Générer du PDF en C# ou C++ ?
    Bonjour tout le monde,

    Avant que vous ne sortiez une collection d'objets contondants pour accueillir mon premier post sur developpez.com (lancer un sujet du genre "C# vs C++" c'est pas génial pour se faire des amis...) laissez-moi vous expliquer mon souci :

    Je dois dans le cadre d'un projet info. mettre en place un process permettant de générer des milliers de documents PDF le plus rapidement possible (c'est un projet dans un cadre pro donc bien évidemment time=money). De base j'aurais tendance à être plus attiré par C#/.Net pour l'aspect développement rapide comparé au C++, mais si niveau développement le C# m'attire plus, j'ai un peu peur que ce choix me plombe au niveau des perfs.

    Donc la question :

    l'écart de performance sera-t-il grand selon que je génère mes PDFs à partir d'un programme en C++ (donc compilé->exe) ou à partir d'un programme en C# (donc executé depuis CLR) ?

    plus précisément, l'écart de temps de génération sera-t-il de l'ordre de quelques pourcents ou dépassera-t-il gaiement la dizaine voire vingtaine ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Il y a deux façons de générer du PDF : soit on utilise une librairie, écrite en C++ ou .NET (.NET et non C# (ce n'est pas une erreur)) ou avec toute autre technologie, soit on se tape les 1700 (ou plus ?) pages de la spécification et on écrit tout "à la mano".

    Les librairies ont un problème : on connaît rarement leurs performances à l'avance. Une librairie écrite en C++ non optimisée peut être plus lente qu'une librairie écrite en VB6 optimisé (je caricature volontairement).

    L'utilisation d'une librarie native en .NET va évidemment dégrader les performances. Le contraire est également vrai.

    En écrivant tout "à la mano", on peut aussi écrire du code optimisé dans un langage et non optimisé dans un autre si bien encore une que le code optimisé VB6 sera plus performant que le code C++ non optimisé.

    Pour finir, il y a un facteur limitatif supplémentaire : le disque dur si la génération doit se faire sur celui-ci : un disque dur, c'est lent ... quelque soit et indépendemment de la technologie de dev utilisée (natif ou CLR).

    Bref, pas assez d'éléments pour construire une réponse catégorique.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    J'ai pas tout compris, mais je te déconseille d'écrire toi même la librairie en question. C'est un travail monstre.
    Ensuite le delta de performance entre code managé et non managé sera minime. Si le programme est bien écrit, ça ne joue quasi pas.

  4. #4
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci de vos réponses.

    Ecrire la librairie à la main n'est pas vraiment une option pour moi car même si la rapidité de génération est un point très important du projet, la génération du PDF n'est qu'un élément de l'ensemble du projet. Donc tout ce qui est interface, gestion utilisateur, archivage, CRM etc... du projet sera fait via .NET (et en l'occurence en utilisant C# comme langage). Je ne peux donc pas passer une trop grande partie de mon temps de dev sur la librairie PDF.

    J'ai bien noté également l'impact du matériel sur la vitesse de génération mais il impactera sur toutes les solutions logicielles indépendamment de mes choix, non ?

    Mon soucis était que pour ce point précis du projet, qui demande beaucoup de performances, si le choix du C++ ou .Net aurait un gros impact sur la vitesse finale de génération.

    Il y a-t-il donc au finish si peu de différence entre code managé et code exécutable que la qualité et l'optimisation du code de la librairie fasse toute la différence ? (Bien entendu je parle de librairies du genre haruPDF, iTextSharp, pas d'une librairie codée à la va-vite...)

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Je suppose que tu va lancer la conversion avec ton code et la librairie va faire le reste. Du coup la part de code que tu va écrire pour ta routine va être très limitée (ca se traduira peut être par une boucle qui appelle une API de la librairie ou quelque chose de ce genre là??). Je ne pense pas que ce soit ton code qui ralentisse de façon significative ton apppli (managée ou non).
    J'en déduis que c'est la librairie qui fera la différence. Et là tu peux éventuellement te poser la question entre managé ou non (au niveau de la librairie).

    Sinon, j'ai pas trouvé grand chose au niveau de tests de perfs à part ça. (et ça date!).

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    un truc "tout" con serait d'utiliser une imprimante PDF (genre PDF Creator).

    Après, est-ce que les IHM présenté par ce type de composant est pilotable en ligne, je pense que cela doit être possible

    En tout cas, moi, je ne vois que deux solutions rapides :

    1 - Acheter un composant logiciel qui fait ce que tu souhaites faire

    2 - Utiliser une imprimante PDF en trouvant celle qui sera le moins intrusive en terme d'interface posant des questions à l'utilisateur.

    On doit pouvoir faire du batch avec pdf creator

    Faut chercher maintenant !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour vos retours et merci Chrisdot pour cet article sur les perf comparées code managé/non managé.

    Le truc c'est que j'ai quelques compétences en Java, j'ai eu des formations Java en cadre universitaire et professionnel, j'ai à chaque fois eu des intervenants en face de moi qui me juraient la main sur le coeur que Java était aussi rapide que C++. Le problème c'est qu'entre la théorie et la pratique j'ai toujours trouvé l'écart TRES décevant.

    Alors certes ils prouvaient que sur un loop de 15 lignes on ne pouvait pas faire de différence entre Java et C++ mais quand je me mettais à développer une appli réseau avec interface Swing et que je m'apercevais que mon programme mettait une dizaine de secondes pour raffraichir l'écran sur un bête changement d'onglet... Je me suis dit que le code non managé avec beaucoup d'avenir devant lui.

    Depuis j'ai découvert .Net, des amis à moi m'ont dit que c'était très réactif pour du managé. Donc voilà si je fais une fixette sur la comparaison managé/non managé c'est probablement à cause de ma mauvaise expérience du java.

    Mais là encore je suppose que vous allez me dire que c'est une question de librairie ou d'API, que .Net a été prévu pour tourner sur Windows et qu'il ne s'embarasse pas de toute les lourdeurs de la JVM pour assurer sa portabilité notamment au niveau des UI.

    Je vais tenter de faire mon programme en C#, le développement sera plus rapide et si je me plante ça me laissera une marge pour refaire ce bout de projet en C++.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut
    Bonjour,
    Si tu n'es pas trop allergique à l'anglais, tu peux lire cette article. Il est fort intéressant. Il présenter une librairie importer de java pour le dotNet qui permet la création de pdf dynamiquement.
    http://www.developerfusion.com/code/...g-pdfs-in-net/
    A bientôt

Discussions similaires

  1. Générer un PDF en Java
    Par joneil dans le forum Documents
    Réponses: 7
    Dernier message: 25/02/2012, 15h14
  2. Générer du PDF avec QuickReport
    Par yanis97 dans le forum Composants VCL
    Réponses: 11
    Dernier message: 29/07/2008, 16h59
  3. Générer un PDF à partir d'une page ASP
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 30/03/2006, 17h45
  4. Générer du pdf
    Par illegalsene dans le forum Documents
    Réponses: 5
    Dernier message: 04/05/2005, 14h20
  5. Librairies gratuites pour générer du PDF
    Par Noxexplorer dans le forum ASP
    Réponses: 2
    Dernier message: 02/05/2005, 20h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo