PHP vs. C
Posté : 26 oct. 2011, 16:06
Hop, un petit compte rendu suite à une expérience (tout à fait non scientifique) que j'ai eu l'occasion de faire, c-à-d porter une fonction PHP vers un module C.
On se dit: ouatcha, ça va dépoter grave !! Alors tout de suite la conclusion: Un peu ouais, mais pas tellement que ça.
Tout d'abord, la fonction concernée: elle extrait les mots d'un texte, en compte les occurrences, et les compare à un autre texte (les "mots vides", ou stopwords, ç-à-d des mots trop communs pour avoir une réelle signification).
Voici les résultats avec une fonction entièrement en Php (il s'agit a chaque fois des mêmes données de départ):
Avant de le transférer vers une extension Php, j'ai testé le code à travers un exécutable externe (donc en C compilé), appelé via exec():
Ensuite, la même chose sous forme d'une extension Php:
Voilà pour ce qui est d'un gain de performance exceptionnel..
Ce qu'il faut savoir: le code C n'est pas optimal, il y a encore certaines lourdeurs, mais d'un autre côté, en Php aussi. Et chaque option arrive exactement au même résultat (ce qui implique pas mal de post-traitement dans le deuxième cas).
Et le texte était encore assez réduit, je devrais réessayer avec un texte plus vaste, pour pousser un peu les limites du système.
On se dit: ouatcha, ça va dépoter grave !! Alors tout de suite la conclusion: Un peu ouais, mais pas tellement que ça.
Tout d'abord, la fonction concernée: elle extrait les mots d'un texte, en compte les occurrences, et les compare à un autre texte (les "mots vides", ou stopwords, ç-à-d des mots trop communs pour avoir une réelle signification).
Voici les résultats avec une fonction entièrement en Php (il s'agit a chaque fois des mêmes données de départ):
Code : Tout sélectionner
Took 0.013445138931274, found 568 unique words.Code : Tout sélectionner
Took 0.018234014511108, found 568 unique words.Code : Tout sélectionner
Took 0.0087411403656006, found 568 unique words.Ce qu'il faut savoir: le code C n'est pas optimal, il y a encore certaines lourdeurs, mais d'un autre côté, en Php aussi. Et chaque option arrive exactement au même résultat (ce qui implique pas mal de post-traitement dans le deuxième cas).
Et le texte était encore assez réduit, je devrais réessayer avec un texte plus vaste, pour pousser un peu les limites du système.