Question

Je suis un étudiant en informatique et j'entends le mot « frais généraux » beaucoup en ce qui concerne les programmes et les sortes. Qu'est-ce que cela signifie exactement?

Était-ce utile?

La solution

Ce sont les ressources nécessaires pour mettre en place une opération. Il peut sembler sans rapport, mais nécessaire.

Il est comme quand vous avez besoin d'aller quelque part, vous pourriez avoir besoin d'une voiture. Mais, ce serait beaucoup de frais généraux pour obtenir une voiture pour conduire dans la rue, vous voudrez peut-être marcher. Toutefois, les frais généraux serait la peine si vous allez à travers le pays.

Dans la science informatique, parfois nous utilisons les voitures pour aller dans la rue parce que nous n'avons pas une meilleure façon, ou il ne vaut pas notre temps à « apprendre à marcher ».

Autres conseils

Le sens du mot peut varier beaucoup avec le contexte. En général, il est le plus souvent des ressources (mémoire et de temps CPU) qui sont utilisés, qui ne contribuent pas directement au résultat escompté, mais sont requis par la technologie ou méthode qui est utilisée. Exemples:

  • Protocole frais généraux : les trames Ethernet, paquets IP et TCP segments ont tous les en-têtes, les connexions TCP nécessitent des paquets poignée de main. Ainsi, vous ne pouvez pas utiliser toute la bande passante du matériel est capable de vos données réelles. Vous pouvez réduire les frais généraux en utilisant la taille des paquets UDP plus grandes et a un plus petit en-tête et sans poignée de main.
  • surcharge de la mémoire de la structure de données : Une liste liée nécessite au moins un pointeur pour chaque élément qu'il contient. Si les éléments sont la même taille qu'un pointeur, cela signifie une mémoire de frais généraux de 50%, alors qu'un tableau peut potentiellement avoir 0% de frais généraux.
  • les frais généraux d'appel Méthode : Un programme bien conçu est divisé en lots de courtes méthodes. Mais chaque appel de méthode nécessite la mise en place d'un cadre de pile, les paramètres de copie et une adresse de retour. Cela représente la surcharge du processeur par rapport à un programme qui fait tout en une seule fonction monolithique. Bien sûr, la maintenabilité ajouté en fait une valeur très bien, mais dans certains cas, les appels de méthode excessive peut avoir un impact significatif sur la performance.

Vous êtes fatigué et ne pouvez pas faire plus de travail. Tu manges de la nourriture. L'énergie dépensée à la recherche de la nourriture, l'obtenir et le manger consomme réellement l'énergie et les frais généraux!

Les frais généraux sont quelque chose gaspillée pour accomplir une tâche. L'objectif est de faire les frais généraux très très petite.

Dans l'informatique permet de dire que vous voulez imprimer un numéro, c'est votre tâche. Mais stocker le nombre, la mise en place de l'affichage pour imprimer et appeler des routines pour l'imprimer, l'accès alors le nombre de variables sont tous les frais généraux.

nous a couvert:

  

Dans la science informatique, frais généraux est   généralement considéré toute combinaison   de calcul excès ou indirect   le temps, la mémoire, la bande passante, ou toute autre   les ressources nécessaires pour atteindre   un objectif particulier. Il est spécial   cas des frais généraux d'ingénierie.

Frais généraux généralement reffers à la quantité de ressources supplémentaires (mémoire, processeur, temps, etc.) que les algorithmes de programmation différents prennent.

Par exemple, les frais généraux d'insertion dans un arbre binaire équilibré pourrait être beaucoup plus grande que le même insert en une simple liste chaînée (l'insert prendra plus, sa consommation d'électricité de traitement pour équilibrer l'arbre, ce qui se traduit par une plus percieved temps de fonctionnement par l'utilisateur).

Pour un programmeur fait référence à ces frais généraux ressources du système qui sont consommés par votre code quand il est en cours d'exécution sur une plate-forme donnant sur un ensemble de données d'entrée. Habituellement, le terme est utilisé dans le contexte de comparer les différentes implémentations ou implémentations possibles.

Par exemple, nous pourrions dire qu'une approche particulière pourrait encourir les frais généraux de ressources CPU tandis qu'un autre pourrait encourir plus de frais généraux de mémoire et une autre puissance pondéré aux frais généraux du réseau (et entraîner une dépendance externe, par exemple).

Donnons un exemple spécifique: Calculer la moyenne de la (moyenne arithmétique) d'un ensemble de nombres

.

L'approche évidente consiste à boucler sur les entrées, en gardant un total de fonctionnement et un compte. Lorsque le dernier numéro est rencontré (signalé par « la fin du fichier » EOF ou une valeur sentinelle, ou une buttom GUI, peu importe) puis on divise simplement le total par le nombre d'entrées et nous avons terminé.

Cette approche entraîne presque pas de frais généraux en termes de CPU, de la mémoire ou d'autres ressources. (Il est une tâche triviale).

Une autre approche possible consiste à « slurp » l'entrée dans une liste. parcourir la liste pour calculer la somme, puis diviser par le nombre d'éléments valides à partir de la liste.

Par comparaison cette approche pourrait encourir des frais généraux arbitraires quantités de mémoire.

Dans une mise en œuvre particulière mauvaise nous pourrions effectuer l'opération de somme à l'aide récursion mais sans queue d'élimination. Maintenant, en plus de la surcharge de mémoire pour notre liste nous introduisons aussi les frais généraux de la pile (ce qui est un autre type de mémoire et est souvent une ressource plus limitée que d'autres formes de mémoire).

Encore une autre (sans doute plus absurde) approche serait d'afficher toutes les entrées à une table SQL dans un SGBDR. Ensuite, appeler simplement la fonction SQL SUM sur cette colonne de cette table. Cette évolution de notre généraux de mémoire locale à un autre serveur et réseau par une surcharge et les dépendances externes sur notre exécution. (Notez que le serveur distant peut ou non avoir une mémoire particulière frais généraux associés à cette tâche --- il pourrait pousser toutes les valeurs immédiatement au stockage, par exemple).

Hypothétiquement pourrait envisager une mise en œuvre sur une sorte de cluster (peut-être faire la moyenne des valeurs possibles de billions). Dans ce cas, tout d'encodage nécessaire et la distribution des valeurs (les mapper vers les noeuds) et la collecte / compilation des résultats (réduction) comptera comme au-dessus.

Nous pouvons aussi parler les frais généraux engagés par des facteurs au-delà propre code du programmeur. Par exemple la compilation d'un code pour 32 ou 64 processeurs de bits pourrait entraîner plus frais généraux que l'on pourrait voir un de 8 bits ou de l'architecture 16 bits. Cela peut impliquer plus grande surcharge de mémoire (problèmes d'alignement) ou au-dessus du processeur (où le CPU est forcé d'ajuster la commande de bits ou utilisé des instructions de non-alignés, etc.) ou les deux.

Notez que l'espace disque occupé par votre code et il est des bibliothèques, etc. ne sont généralement pas considéré comme « frais généraux », mais plutôt que l'on appelle « l'empreinte ». Aussi la mémoire de base de votre programme (consume sans tenir compte de tout ensemble de données que c'est le traitement) est appelé son « empreinte », ainsi.

Vous pouvez utiliser un dictionnaire. La définition est la même. Mais pour gagner du temps, le travail Les frais généraux sont nécessaires pour faire le travail productif. Par exemple, un algorithme fonctionne et fonctionne utile, mais exige de la mémoire pour faire son travail. Cette allocation de mémoire prend du temps, et n'est pas directement lié au travail accompli, est donc en tête.

Overhead est simplement la plus grande consommation de temps dans l'exécution du programme. Exemple ; lorsque l'on appelle une fonction et son contrôle est passé où elle est définie et son corps est exécuté, cela signifie que nous faisons notre CPU pour exécuter à travers un long processus (d'abord passer le contrôle à un autre endroit dans la mémoire, puis l'exécution par là et passant le dos de contrôle à l'ancienne position), par conséquent, il prend beaucoup de temps de performance, d'où les frais généraux. Nos objectifs sont de réduire cette surcharge en utilisant la ligne lors de la définition de la fonction et le temps d'appel, qui copie le contenu de la fonction à l'appel de fonction donc nous ne passer le contrôle à un autre endroit, mais poursuivre notre programme en ligne, donc en ligne .

Vous pouvez consulter Wikipedia . Mais surtout, lorsque plusieurs actions ou les ressources sont utilisées. Comme si vous êtes familier avec .NET là, vous pouvez avoir des types de valeur et les types de référence. Les types de référence ont en tête de la mémoire car ils nécessitent plus de mémoire que les types de valeurs.

Un exemple concret des frais généraux est la différence entre un appel de procédure « local » et un appel de procédure « à distance ».

Par exemple, avec RPC classique (et bien d'autres cadres à distance, comme EJB), un appel de fonction ou méthode ressemble même à un codeur que ce soit un local, dans l'appel de la mémoire, ou une distribution, appel réseau.

Par exemple:

service.function(param1, param2);

Est-ce une méthode normale, ou une méthode à distance? D'après ce que vous voyez ici, vous ne pouvez pas dire.

Mais vous pouvez imaginer que la différence de temps d'exécution entre les deux appels sont dramatiques.

Ainsi, alors que la mise en œuvre de base sera « le même coût », l'impliqué « frais généraux » est tout à fait différent.

Pensez à la tête comme le temps nécessaire pour gérer les discussions et coordonner entre eux. Il est un fardeau si le thread n'a pas assez de tâche à accomplir. Dans ce cas, les frais généraux sur vient le temps économisé grâce à l'aide de filetage et le code prend plus de temps que celui séquentiel.

son autre chose que les données elles-mêmes, à savoir tcp drapeaux, les en-têtes, crc, etc .. fcs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top