Aller au contenu

Choix langage pour lourde analyse textuelle


Galeenet

Sujets conseillés

J'ai un process à faire sur du contenu textuel, et mes essais en PHP mettent à plat mutu comme dédié, donc je dois pas avoir choisi la bonne solution (litote :) )

J'ai chaque jour un contenu textuel sous forme de log, avec des lignes du genre :

date_AT_parametre_AT_contenu1_AT_contenu2@@\n

Le parametre fait 10-30 caracteres, le contenu 1 20-50 cars, le contenu 2 0 - 600 cars.

J'ai de 30 000 à 100 000 lignes de ce genre, et le fichier total produit chaque jour fait dans les 100-200 Mo.

Ca c'est le gros morceau.

Par ailleurs, j'ai un fichier d'environ 4000 "expressions", à remplacer par leur équivalent protégé dans le fichier d'au dessus.

Par exemple, j'ai l'expression "mot1 mot2", et je veux remplacer dans chaque ligne du fichier "mot1 mot2" par "mot1+mot2".

X 4000 expressions, X 50 000 lignes, je vous fais pas de dessin, avec un script php, meme optimisé au max (pas de regex, traitement par ligne, une array des expressions, boucle au plus simple) le dedie appelle le SAMU.

Je sais pas par quel bout prendre le probleme :

script shell, avec awk, avec autre chose ?

script perl ? php en cli ?

Je connais correctement php, et pas grand chose d'autre en prog, je suis pret a apprendre les rudiments d'un autre langage, mais je sais pas lequel :D

Des conseils la dessus ?

Les 4000 expressions sont fixes (meme si j'en ajoute, je me passerais d'un update complet de tous les fichiers précédents), le fichier est diférent et produit chaque jour par un de mes sites.

Lien vers le commentaire
Partager sur d’autres sites

N'est-il pas possible de scinder en x fichiers plus petits, le gros à analyser ?

Cela permettrait de remettre les temps d'exécutions à plat, à chaque changement de fichiers ?

xpatval

Lien vers le commentaire
Partager sur d’autres sites

J'y ai songé, et j'ai deux possibilités :

splitter par parametre, et ca faire dans les 4000 fichiers par jour, en admettant que mon dédié veuille bien charger et processer un fichier de 150Mo.

splitter arbitrairement toutes les 10 000 lignes. beaucoup d'opérations, mais ca peut etre jouable.

Plus en amont, je peux avoir un cron qui checke tous les quart d'heures si le fichier a depasse les x lignes, et le renomme avec un prefixe/suffixe.

Ainsi le script de log ne trouvera plus le fichier, en créera un nouveau et roulez jeunesse.

Ces solutions de split, c'est le "pis aller". Si aucun langage simple ne peut faire ce genre de choses sur un dédié "normal" (une dedibox, quoi :) ), alors je splitte.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Et en transposant le traitement en C, C++ ou JAVA ?

Si tu disposes d'une dedibox, tu auras les droits pour te compiler un petit bout de soft en C pour cela. Si le code est assez simple et que tu l'as en PHP il devrait être possible de le transposer dans ces langages avec un peu d'aide je pense :) Le temps d'exécution devrait être moins important (surtout en C) !

Edit : emmelage de pinceaux, je croyais ce topic recent :wacko: Je laisse mon post quand même au cas ou...

Modifié par BigVicente
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...