Qu'est-ce que l'optimisation du code?
Lorsque ce code besoin d'une certaine optimisation, ou peut-être d'une façon optimisée, qu'est-ce que cela signifie? quel type de code besoin d'optimisation? Comment appliquer de l'optimisation du code en c#? Quels sont les avantages de qui?
OriginalL'auteur Abdullah BaMusa | 2009-02-12
Vous devez vous connecter pour publier un commentaire.
Optimisation est un terme très large. En général, cela implique de modifier le système pour le rendre certains de ses aspects à travailler plus efficacement et d'utiliser moins de ressources ou d'être plus robuste. Par exemple, un programme d'ordinateur peut être optimisé de sorte qu'il s'exécute plus rapidement ou d'utiliser moins de mémoire ou de disque de stockage ou d'être plus réactif en termes d'INTERFACE utilisateur.
Bien que "l'optimisation" a la même racine que "optimale", le processus d'optimisation ne produit pas totalement optimal du système: il y a toujours un compromis, de sorte que seuls les attributs d'un grand intérêt sont optimisés.
Et n'oubliez pas:
Je préfère la citation de Donald Knuth, "On devrait oublier les petites efficacité, disons environ 97% de l'optimisation prématurée est la racine de tous les maux. Pourtant, nous ne devrions pas laisser passer les occasions dans cette critique de 3%." Critique de 3% est particulièrement important (et souvent ignoré) de la première partie de cette citation. C'est les fruits mûrs. Parfois, les plus grands gains peuvent être réalisés avec un minimum d'effort. Vous avez juste à passer un peu de temps de mesure et d'analyse pour trouver les goulots d'étranglement.
OriginalL'auteur Anton Gogolev
Optimisation est le processus de modification d'un système à faire un certain aspect de fonctionner de manière plus efficace ou moins de ressources.
Dans votre cas se réfère principalement à 2 niveaux:
OriginalL'auteur gimel
L'optimisation du Code est de rendre le code plus rapide. Il existe deux principales façons de le faire:
1) en Serrant plus de travail en moins de cycles. La Figure où le code est en train de faire une copie supplémentaire ou si il y a une branche dans une boucle serrée. C'est l'optimisation de la petite.
2) la Prise de vos algorithmes échelle de mieux. Vous avez peut être entendu parler de "Big O" de la notation. Cela en fait un algorithme se dégradent beaucoup moins vite avec de grands ensembles de données.
Par exemple, si vous naïvement la recherche d'un livre de téléphone pour un nom que vous pouvez commencer à la page 1 et de lire tous les noms jusqu'à ce que vous trouviez celui que vous cherchez. Cela va prendre un certain nombre de directives à l'échelle par le nombre de noms dans le livre de téléphone. Nous appelons cette O(n). Maintenant, pensez à comment vous avez vraiment de la recherche de l'annuaire téléphonique. Vous vous ouvrez à un certain endroit, vers le milieu et de voir de quel côté le nom que vous cherchez est sur. Ceci est appelé une recherche binaire et à l'échelle logarithme du nombre de noms. Nous appelons cette O(logn). C'est beaucoup plus rapide.
Souviens de la première règle de l'optimisation: Mesurez d'abord. Beaucoup d'homme années ont été consacrés à l'optimisation de code qui n'était pas très bien.
Ceci est utile, mais plus d'explication serait appréciée à Partir de l'annuaire téléphonique , Supposons que j'ai des milliers de noms et de tous les noms ont un ou plusieurs téléphone, à la recherche de chaque nom à son, tous les téléphones Doivent boucle pour chaque nom et la retirer du téléphone. Où pour optimiser ici. Comment appliquer Big O.
J'ai tendance à être d'accord avec Peter Chen que la principale ressource qui est épuisé ces jours n'est pas de cycles CPU. IMO c'est la bande passante du réseau, donc tous les efforts à l'optimisation AV codecs etc...
OriginalL'auteur Steve Rowe
Quand on fait de l'optimisation du code, vous prenez une métrique sur votre code et essayer de la rendre plus efficace. La métrique fait généralement référence à une ressource rare.
Ici, sont des indicateurs communs
Après l'optimisation du code devraient donner le même résultat.
Le problème, c'est que vous avez à faire des choix. La vitesse d'exécution vient souvent avec plus de mémoire consuption...
Vous devez également toujours envisager l'optimisation à l'échelle mondiale. Avoir un gain de 10 ms dans une boucle lorsque vous passez alors 1000ms d'attente pour un service web est totalement inutile.
OriginalL'auteur thinkbeforecoding
À ajouter à Anton Gogolev réponse, quand un morceau de code doit optimisation, c'est parce que l'exigence de performance n'est pas remplie. Nous développons des programmes pour répondre aux exigences des utilisateurs, non? La plupart des programmeurs ont tendance à penser en grande partie en termes d'exigences fonctionnelles, c'est à dire ce que fait le programme, mais les utilisateurs ont également des exigences de performance, quel est le coût des ressources (bande passante du réseau, des cycles CPU, mémoire, espace disque, etc...) de fournir la fonctionnalité. L'optimisation est le processus d'évolution d'un morceau de code pour répondre à une exigence de performance. À mon humble avis cela doit se faire au moment de la conception, mais parfois d'écrire un morceau de code seulement pour découvrir qu'il connaît une contre performance. Pour optimiser le code, vous devez d'abord savoir qui est la ressource que vous êtes plus à l'aide. Si c'est des cycles de CPU ou de la mémoire, un profileur peut aider. Si c'est la bande passante du réseau, ce qui est très fréquent ces jours-ci, vous aurez besoin de faire quelques tests de charge et de comms de profilage.
Mon conseil serait de toujours comprendre votre actuel et l'avenir probable perfromance exigences avant d'écrire le code, et d'optimiser au stade de la conception. La fin de l'optimisation est coûteuse, difficile, et souvent d'échec ou de résultats dans laide code.
OriginalL'auteur SmacL
Optimisation a deux buts principaux:
l'obtention de votre logiciel de l'utilisation de moins de ressources, par exemple, de courir plus vite, être plus petits, utiliser moins de mémoire vive, moins d'espace sur le disque dur à la fois lors de l'exécution et lors du stockage des documents, moins d'accès au réseau, ...
l'obtention de votre logiciel plus facile à maintenir, par la refactorisation.
Vous n'avez pas besoin d'optimiser tant qu'aucune question a été soulevée: Il est beaucoup plus difficile à déboguer le code optimisé que pour optimiser le code est correct.
OriginalL'auteur mouviciel
Il pourrait être, par exemple, que le code a un bloc de code qui est dupliqué, et pourrait/devrait être mis dans une méthode, vous pourriez être en utilisant des méthodes obsolètes/classes, il pourrait y avoir des moyens plus simples de faire ce que fait le code, il y a peut être d'un peu de nettoyage à faire (par exemple, supprimer le codage en dur), etc...
OriginalL'auteur tehvan