2010-07-28 11 views
0

AWK utilise-t-il beaucoup de puissance de traitement? Si oui, y a-t-il un meilleur langage de script pour le faire? Ou devrais-je le faire en C lui-même (où le reste de mon code est).Un script AWK prend-il beaucoup de CPU?

+0

Qu'est-ce que vous faites avec C, que vous ne pouvez pas faire avec le shell ou un autre langage de programmation? – ghostdog74

+0

Ohh, c'est un énorme système écrit en C et le changer n'est pas une option. – hari

+0

Okay. Je l'ai compris partiellement. Le script awk appelle 'date'. Ce qui prend un peu de temps pour répondre. Merci à tous ceux qui ont aidé. – hari

Répondre

2

Cela dépend de ce que vous lui dites de faire. La plupart du travail est transmis au moteur de regexp, qui devrait être similaire, peu importe la langue que vous utilisez. Maintenant, si vous utilisez un script awk à l'intérieur d'un programme C, et que vous avez les ressources pour simplement implémenter la fonctionnalité en C aussi, vous feriez mieux de le faire. Vous éviterez les processus de création/terminaison de processus/de communication (ce qui peut ou non être une grande partie de la performance que vous obtiendrez).

Pour plus d'informations, nous en dire plus sur votre script!

+0

Merci pour la réponse, dans ce cas: d'un fichier C -> un script shell qui appelle -> un script awk - qui continue à regarder un fichier journal et comme une nouvelle entrée obtient dans le fichier journal, il est filtré par le script. Si correspond à l'ensemble de filtres, est imprimé au format XML. – hari

+0

En supposant que le fichier journal n'est pas écrit trop souvent, cela ne devrait pas avoir d'importance dans un sens ou dans l'autre. Et si vous choisissez d'inclure le script awk dans votre code C, vous devrez également inclure le script shell. Ce sera évidemment plus rapide, mais probablement pas beaucoup, donc vous devez peser le coût (le temps) vs le bénéfice (la vitesse). – Blindy

+0

Bien sûr, tout avoir dans un programme aide à minimiser les échecs de dépendance et facilite la distribution. Nourriture pour la pensée. – Blindy

0

Si la plus grande partie de votre code est en c, il est probablement plus propre d'utiliser c pour effectuer votre traitement de chaîne plutôt que d'effectuer un retrait. Vous pouvez utiliser PCRE directly dans votre programme.