Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2469 connectés 

  FORUM HardWare.fr
  Programmation

  [PERL/C] Convertir du PERL en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL/C] Convertir du PERL en C

n°28132
el goano
Posté le 27-04-2001 à 16:07:43  profilanswer
 

J'utilise PERL v5.6.0 built for MSWin32-x86-multi-thread (la version la plus récente) sous NT4, et je souhaiterai - pour des questions d'optimisations - convertir du PERL en C.
 
J'ai essayé de faire fonctionner perlcc, mais cela ne donne aucun résultat.
 
D'avance merci.

mood
Publicité
Posté le 27-04-2001 à 16:07:43  profilanswer
 

n°28145
el goano
Posté le 27-04-2001 à 16:19:50  profilanswer
 

précision, lorque j'utilise perl, il me balance :  
 
E:\perl -MO=C test.pl -otest.c
 
Can't call method "can" without a package or object reference at E:/Perl/lib/B/C.pm line 1341.
CHECK failed--call queue aborted.

n°28225
nicotine
Posté le 27-04-2001 à 22:33:20  profilanswer
 

j'ignorais que c'etait possible.
 
vu le msg d'erreur , cherche une autre lib (plus vieille / plus recente ?)


---------------
Do androïds dream of electric sheep ?
n°28450
el goano
Posté le 30-04-2001 à 09:53:55  profilanswer
 

Merci, je vais essayer.
Quelqu'un aurait-il une autre suggestion ?

n°28453
krolours1
Posté le 30-04-2001 à 10:07:21  profilanswer
 

A mon avis ça doit pas donner des résultats extraordinaire de convertr le perl en c : perl est super-optimisé pour tout ce qui concerne les chaines de caractères, les expressions régulières ...

n°28455
el goano
Posté le 30-04-2001 à 10:19:22  profilanswer
 

Justement Non, mon programme utilise les expressions régulières et il les recompile à chaque fois.
 
Pour te donner un ordre d'idée, le programme recompile plusieurs milliards de fois les mêmes expressions régulières, c'est pourquoi j'aimerai le convertir en C afin qu'il ne les recompile pas systématiquement on the fly.

n°28524
el goano
Posté le 30-04-2001 à 15:20:50  profilanswer
 

.

n°28528
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 15:33:30  profilanswer
 

A mon avis, Perl est le must de l'expression réguliére c'est en en faisant un prog c que miracle ca sera mieux :)
 
et puis suivant ton opération (ton algorithme), ca va pas résoudre on pb!!


---------------
Tout à commencé par un rêve...
n°28530
el goano
Posté le 30-04-2001 à 15:38:53  profilanswer
 

SI ! Car PERL recompile A LA VOLEE les expressions régulières.
 
Si tu as 150 000 fois la même expression régulière, il la recompilera 150 000 fois, car PERL est un langage interprété. Le programme C ne le fait qu'une fois puisqu'il est compilé.

n°28533
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 15:43:33  profilanswer
 

que tu passe 150000 fois dans une boucle ou que tu "compile" ton prog qui va exécuter 150000 fois la meme chose,
 
j'vois pas la différence !

mood
Publicité
Posté le 30-04-2001 à 15:43:33  profilanswer
 

n°28539
el goano
Posté le 30-04-2001 à 16:01:40  profilanswer
 

PERL compile ET execute 150 000 fois l'expression régulière.
C compile 1 fois ET execute 150 000 fois l'ER.
 
Comme c'est la compilation qui prend le plus de temps ...
 
Mais merci de t'intéresser à mon problème.
En ce qui concerne le tien (configuration du port //), je suis désolé mais j'ai pas trouvé dans la doc PERL officielle. Tu devrais regarder du côté de :
http://www.perlmonks.org/index.pl?node=Library
ou  
http://www.activestate.com/

n°28542
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 16:05:59  profilanswer
 

merci pour la doc mais je suis dejà aller voir ;)
 
Pour ton prog, suivant pour koi c faire je te conseil quand meme de le laisser en Perl. lors de la conversion ca risque de poser des pb plus ou moins grave !!
 
Pour mon info perso i sert à koi ton prog (crytage, décrytage ou autre ??)

n°28545
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 16:07:13  profilanswer
 

g oublié la compile d'1 fichier Perl prend au plus 0,000000687 secondes :)

n°28547
el goano
Posté le 30-04-2001 à 16:19:12  profilanswer
 

0,000000687 secondes * 150 000 (car compilation à la volée!)  :cry: , ce qui fait beaucoup beaucoup.
 
Mon programme doit faire une sorte de MULTIGREP :  
 
En entrée :  
1 : les E.R. dans un fichier.
2 : les fichiers à analyser.
 
En Sortie :  
un fichier résultat stockant les lignes qui matchent avec les ER.

n°28551
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 16:34:52  profilanswer
 

g fais un script Perl ki traite 2000 annonces ki se trouvent dans bdd MySql, il les parse et les écrit dans 2 fichiers txt suivant le type de l'annonce.
 
il fait tous ca en 20,521 secondes ! montre en main ;)
c pour ca que je te dit tous.  
Le script est exécuté 1 fois donc est compilé 1 fois. par contre à l'intérieur il y a moulte d'expression réguliére pour faire le netoyage des annonces. Au vu de ce resultat et vu le temps de connexion à la bdd, le temps que le script met est tout a fait résonnable (pour ma part).
donc pour ton script en théorie il devrais mettre quelmque chose comme 2 mins ce qui est tout a fait correct. (à mon avis)

n°28556
el goano
Posté le 30-04-2001 à 17:02:26  profilanswer
 

Dans les faits, sur quelque chose comme 4 Milliards de lignes de fichiers COBOL traitées, il met 1h30, ce qui est beaucoup trop (cf. mon BOSS), c'est pourquoi j'aimerai le convertir en C, pour - j'espère - gagner du temps.
 
3 solutions :
1. un traducteur perl -> C (c'est la raison de mon TOPIC).
2. tout refaire en C++ (c'est chiant car plein de facilités PERL que n'a pas C++).
3. Mixer PERL / C (à l'étude, dès que le PROTO est fini (utilisation d'une Classe C++ gérant les ER.) appel d'un module C dans le code PERL).

n°28560
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 17:09:45  profilanswer
 

vu comme ça :(
 
g vu un jour sur le net un traducteur Perl => C mais je ne l'ai jamais esayé ni telechargé d'ailleur. Va voir sur le site http://www.telecharger.com/ peut-être trouvera tu ton bonheur


---------------
Tout à commencé par un rêve...
n°28562
stef_dober​mann
Personne n'est parfait ...
Posté le 30-04-2001 à 17:15:31  profilanswer
 

Comment fait-on pour appeler une lib c dans un script Perl?? ou Delphi (avec Delphi je sais envoyer et recevoir des informations à travers le port // :lol: )
 
(a vérifier mais je crois que les scripts perl ne se compile pas ??)


---------------
Tout à commencé par un rêve...
n°28567
el goano
Posté le 30-04-2001 à 17:35:40  profilanswer
 

Dans la doc officielle, regarde du côté de  
how to embed perl in your C program ? section PREAMBLE.
 
J'ai trouvé un soft, Perl2Exe, mais il ne convertit pas en code exe (ou en C), il embarque l'interpréteur, ce qui ne m'intéresse pas du tout (aucun gain de perfs).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PERL/C] Convertir du PERL en C

 

Sujets relatifs
perl et le mirroringperl & MIRROR 2.9
JAVASCRIPT comment convertir une chaine de car en un entier ??convertion de perl en python
Rech. PRG pour convertir du html pour le WAP[pascal] quel est la com pour convertir un fichier Ttexte en tstring ?
Problème avec Perl les CGI et le HTML[Delphi] Convertir une chaîne de caractère en un entier
CGI : pourquoi le perl?[Perl] Une chaine (numerique) commençant par des "0" ??
Plus de sujets relatifs à : [PERL/C] Convertir du PERL en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR