Porter du Java en C++ [C++] - C++ - Programmation
Marsh Posté le 30-07-2004 à 09:17:17
ça dépend des tes capacités en C++, si elles sont faibles, il va te falloir beaucoup de temps pour obtenit la même qualité
Marsh Posté le 30-07-2004 à 09:28:27
Taz a écrit : ça dépend des tes capacités en C++, si elles sont faibles, il va te falloir beaucoup de temps pour obtenit la même qualité |
Ok mais en estimant que ce sont des équipes d´ingénieurs fortement qualifiés dans les 2 langages... ?
Merci!!!
Marsh Posté le 30-07-2004 à 10:48:19
ça dépend de ton appli. par exemple si tu utilises beaucoup de réflexion, va falloir repenser pas mal de choses.
Marsh Posté le 30-07-2004 à 15:43:08
la reflexion => la capacité a connaitre (et modifier ?) la structure des objets a l'execution
Marsh Posté le 30-07-2004 à 15:44:55
Je suis pas sûr, j'avais lu vite, et peut être j'ai mal compris, mais il me semble bien avoir croisé un document (thèse je crois) où le gars avait recodé pas mal d'api Java en C++ et réalisé une sorte de petit framework pratiquement source compatible entre Java et C++. Le but était de comprarer les performances.
Marsh Posté le 30-07-2004 à 19:50:15
Taz a écrit : d'ailleurs pourquoi recoder ? |
pour constater une fois pour toutes que Java est une brouette face au C++
Marsh Posté le 30-07-2004 à 20:17:24
nulle n'est besoin de preuve, c'est la définition de Java
Marsh Posté le 31-07-2004 à 16:37:31
Harkonnen a écrit : pour constater une fois pour toutes que Java est une brouette face au C++ |
euh je ne suis qu'un programmeur amateur débutant alors ca veut dire quoi? que java va moins loin que c++ ou le contraire?
Marsh Posté le 31-07-2004 à 18:39:57
je pense que ça veut surtout dire que java est plus lent, et c'est en effet dans sa définition puisqu'il est interprété par une machine virtuelle et non pas par ta propre machine, à toi, directement.
Marsh Posté le 17-08-2004 à 10:22:56
je pense que ça veut surtout dire que java est plus lent, et c'est en effet dans sa définition puisqu'il est interprété par une machine virtuelle et non pas par ta propre machine, à toi, directement.
On peut compiler du java comme on compile du C++.
Marsh Posté le 17-08-2004 à 10:54:32
ReplyMarsh Posté le 17-08-2004 à 11:08:29
Il existe deja JIT ( just in time )
la première fois qu'une instruction est exécutée, elle est compilée de sa forme Java en une forme que l'ordinateur peut comprendre nativement puis chaque fois que cette instruction est de nouveau rencontrée , elle est native et donc plus rapide. La performance est ainsi accrue de 10 à 20 fois
Marsh Posté le 17-08-2004 à 11:23:20
On devrait tt les gros trolleurs. Surtout quand ils sont modérateurs !
Marsh Posté le 17-08-2004 à 12:07:49
Citation : La performance est ainsi accrue de 10 à 20 fois |
Ca dépend de la vision que tu portes. On peut tout aussi bien dire que la lenteur est réduite de 10 à 20 fois... :-)
Alors hegros, on change de forum ?
Marsh Posté le 17-08-2004 à 12:43:04
Citation : La performance est ainsi accrue de 10 à 20 fois |
Sans vouloir lancer de dbat java vs c++ car il y en a eu deja beaucoup. java vient corriger et améliorer des éléments du c++. On gagne d'un coté et on perd de l'autre. On peu pas etre gagnant partout
Marsh Posté le 17-08-2004 à 13:04:41
jvois pas trop pk tu migrerais une application java en c++ si c'est celle-ci fonctionne
attendez d'avoir un réel besoin de revoir l'application de A à Z pour les fonctionnalités, et là vous en profiterai pour passer au C++ si c'est tjrs ce que vous souhaitez
Marsh Posté le 17-08-2004 à 13:09:06
Burgergold a écrit : |
Il suffit d'avoir besoin de publier l'application sur des serveurs (ou d'avoir besoin d'augmenter les perfs/l'efficacité), les logiciels qui prennent 15-20Mo de RAM par instance alors qu'en C++ ils en prennent 2, quand il faut faire tourner 50 ou 60 instances par serveur le choix est vite fait
Marsh Posté le 17-08-2004 à 13:10:16
Masklinn a écrit : Il suffit d'avoir besoin de publier l'application sur des serveurs (ou d'avoir besoin d'augmenter les perfs/l'efficacité), les logiciels qui prennent 15-20Mo de RAM par instance alors qu'en C++ ils en prennent 2, quand il faut faire tourner 50 ou 60 instances par serveur le choix est vite fait |
et nous au boulot les gens migre les applications C++ vers du Java
bon faut dire qu'on est vachement multi plateforme (OS/2, Win2k, AIX, Z/OS) alors c'est tout dans notre intérêt
Marsh Posté le 17-08-2004 à 13:14:21
ben si les applications sont pas resource critical il n'y a pas spécialement de raison de les avoir en C/C++, surtout si on a besoin de multi plateforme
mais par exemple pour mon stage j'ai codé un petit moniteur de ressources, la première version était nickel mais en Python/wxPython -> 15Mo pour chaque instance, sur des serveurs applicatifs metaframe avec ~30 utilisateurs par serveur manges tes 600Mo de RAM pour une mini appli.
Je l'ai recodée en C++/wxWidgets, je suis descendu a ~2.5Mo de RAM, les serveurs vont bien mieux
Marsh Posté le 17-08-2004 à 14:01:12
Ouais, enfin bref, le gars vient demander un renseignement. Il viens pas demander des conseils de stratégie pour sa boite. S'il veut migrer vers C++, c'est pas toi, en débarquant, sans aucun élément, qui pourra lui dire si oui ou non il doit faire ça !
Marsh Posté le 17-08-2004 à 14:06:17
El_gringo a écrit : Ouais, enfin bref, le gars vient demander un renseignement. Il viens pas demander des conseils de stratégie pour sa boite. S'il veut migrer vers C++, c'est pas toi, en débarquant, sans aucun élément, qui pourra lui dire si oui ou non il doit faire ça ! |
ce genre de réponses calmes et modérées devraient etre purement interdite. Si tout le monde faisait comme ca, je me demande bien ou on pourrait encore s'empoigner et se tataner sur les forums.
Marsh Posté le 17-08-2004 à 14:18:51
El_gringo a écrit : Ouais, enfin bref, le gars vient demander un renseignement. Il viens pas demander des conseils de stratégie pour sa boite. S'il veut migrer vers C++, c'est pas toi, en débarquant, sans aucun élément, qui pourra lui dire si oui ou non il doit faire ça ! |
la personne a posé sa question et a eu une/des réponses, qu'est ce qui empêche ensuite de débattre calmement de l'intérêt du portage C/C++ -> langages haut niveau et inversement en fonction des situations et dans un contexte global?
Marsh Posté le 17-08-2004 à 14:33:15
Masklinn a écrit : la personne a posé sa question et a eu une/des réponses, qu'est ce qui empêche ensuite de débattre calmement de l'intérêt du portage C/C++ -> langages haut niveau et inversement en fonction des situations et dans un contexte global? |
Ben bien sur que c'est possible de débattre calmement.
A propos de ce que j'ai écrit au dessus, j'avais oublié de citer. Je répondais à Burgergold, quand il disait :
jvois pas trop pk tu migrerais une application java en c++ si c'est celle-ci fonctionne |
Marsh Posté le 17-08-2004 à 14:34:17
Masklinn a écrit : Il suffit d'avoir besoin de publier l'application sur des serveurs (ou d'avoir besoin d'augmenter les perfs/l'efficacité), les logiciels qui prennent 15-20Mo de RAM par instance alors qu'en C++ ils en prennent 2, quand il faut faire tourner 50 ou 60 instances par serveur le choix est vite fait |
en meme temps, faire tourner 50 instances du meme soft, faudrait ptet penser à fouetter le mec qui a architecturé le bordel
Marsh Posté le 17-08-2004 à 14:50:56
the real moins moins a écrit : en meme temps, faire tourner 50 instances du meme soft, faudrait ptet penser à fouetter le mec qui a architecturé le bordel |
mmm non
c'est un moniteur de ressource individuel qui sert à surveiller la place libre dans les répertoires personnels des utilisateurs relativement à un quota fixé (ce sont les utilisateurs qui doivent pouvoir voir leurs ressources hein, pas l'admin)
tu voudrais faire tourner ca comment avec un seul logiciel pour que chaque utilisateur voit la place sur SON disque toi?
Marsh Posté le 21-08-2004 à 02:38:07
hegros a écrit : Il existe deja JIT ( just in time ) |
c'est déjà vieux les JIT. Ca fait longtemps que le Java n'est plus bêtement interprété.
Avec les JVM actuels, c'est beaucoup plus évolué, il ne compile en langage machine que les parties qui en valent la peine. Avec un énorme avantage par rapport à un compilo C++: il compile lors de l'exécution et connait donc les conditions réelles de fonctionnement (taille des structures de données...) et peut donc optimiser en conséquence (feedback-driven optimisation, loop unrolling et tous ces brols...).*
Il y a certaines applis qui sont plus rapides en Java qu'en C++, une fois que la JVM a eu le temps d'optimiser le code.
Par contre, les interfaces graphiques, ça restera toujours plus lent qu'en natif, ça on sait rien y faire...
* dans certains cas, on peut gagner beaucoup. J'ai au moins un exemple, où en passant d'un simple JIT (jre 1.2 de Sun) à la Hotspot (jre 1.4), je diminuais le temps de calcul de 50 à 10 secondes de calculs...
Mais bon, j'ai un autre exemple où ça changait rien
Marsh Posté le 21-08-2004 à 02:54:04
deltaden a écrit : c'est déjà vieux les JIT. Ca fait longtemps que le Java n'est plus bêtement interprété. |
tout a fait (en fait j'en sais rien), mais si tu prends le compilo C++ Intel par exemple, tu peux faire le code machine est amélioré est fonction des retours du profiler.
donc avec un bon compilo C++, en termes de performances, tu as au strict minimum les mêmes performances que du Java, et l'analyse+optimisation est faite en offline, pas sur la machine cliente....
Marsh Posté le 21-08-2004 à 03:38:18
bjone a écrit : tout a fait (en fait j'en sais rien), mais si tu prends le compilo C++ Intel par exemple, tu peux faire le code machine est amélioré est fonction des retours du profiler. |
oui, mais le compilo de la JVM, il améliore aussi en fonction des retours du profiler. Et si l'environnement d'exécution change, il peut le recompiler autrement.
Dans le futur, on pourrait même imaginer qu'il y ait des flags de compilation en fonction de la machine. C'est directement optimisé pour le CPU.
Evidement, ça prend du temps de calcul sur la machine cliente, c'est un désaventage.
Mais Microsoft a l'air de s'orienter par là aussi avec son .NET
Qui sait, Tout les programmes tournenront peut-être comme cela dans le futur
Marsh Posté le 23-08-2004 à 17:00:35
Citation : taille des structures de données |
sizeof ?
Sous .Net, une des principales cause de gain entre un code JITé et un code compilé natif, c'est l'inlining possible au runtime ce qui le rend bien meilleur. Mais malgré ça ça reste plus lent, même si l'écart est de plus en plus faible.
http://www.vertigosoftware.com/Quake2FAQ.htm
Citation : How is the performance of the managed version? |
Marsh Posté le 30-07-2004 à 09:04:48
Bonjour @ tous,
J´aimerais avoir votre opinion sur le travail nécessaire pour porter des sources Java en C++...
En gros, combien de temps faut il pour reprogrammer une application java qui a nécessité 1 Unité de Temps (disons, 1 année) pour être pensée, développée et débuggée.
J´ai lu que le rapport dans les temps de développement entre Java et C++ (en partant de 0) étaient de 2/3...
Merci !!!