Wie mache ich meinen Code schnell [geschlossen]

7

Bitte, jemand kann mich auf ein gutes Tutorial hinweisen, das mir hilft, meinen Code schnell und leicht zu machen. Ich bin interessiert zu wissen, welche Methode schneller ist und wann eine Methode anstelle von anderen Methoden verwendet werden soll Und wie bewertet man, ob ein Code gut oder schlecht ist?
Meine Programmiersprache ist C #.

Hallo alle,
Danke für deine Antworten, sie sind sehr hilfreich.
Ich bearbeite meine Frage, um besonders spezifisch zu sein, dass Optimierung unbegrenzt ist.
Ich möchte wissen, was die beste Methode in jeder Bedingung ist.
Zum Beispiel ist die Verwendung von StringBuilder besser als String, wenn ich Zeilen an einen String anfüge ... Ich brauche nur diese einfachen Dinge.

    
Gaby 23.02.2010, 07:51
quelle

12 Antworten

18

Beachten Sie die Unteroptimierung.

Auch wenn eine bestimmte Funktion schneller ist als eine andere, wird dies nicht unbedingt einen Unterschied in der Laufzeit Ihrer Anwendung machen. Sie müssen verstehen, welche Teile Ihres Codes tatsächlich ein potenzielles Problem darstellen, und sich auf die Optimierung dieser Teile konzentrieren. Beachten Sie die O-Notation Ihrer Funktionen und wie oft sie aufgerufen werden. Um Teile zu identifizieren, die optimiert werden müssen, kann ein Profiler eine gute Hilfe sein.

Diese Frage weist einige interessante Punkte auf Warum sollten Sie nicht optimieren, bis es tatsächlich notwendig ist?

    
stiank81 23.02.2010, 08:01
quelle
7

Sicher. Folgendes machen wir:

  • Beginnen Sie die Reise, indem Sie entscheiden, wann die Reise zu Ende ist. Setzen Sie sinnvolle, kundenorientierte, realistische Leistungsziele. (Für Geschwindigkeit und Ressourcenverbrauch.)

  • Testen Sie Ihren Code sorgfältig, um festzustellen, ob Sie Ihre Leistungsziele erreichen.

  • Wenn Sie Ihre Leistungsziele erreichen, sorgen Sie sich nicht um die Leistung. Die Dinge sind in Ordnung. Sorgen Sie sich für Fehler, Robustheit oder Funktionen.

  • Wenn Sie Ihre Leistungsziele nicht erreichen, führen Sie einen Profiler aus. Verwenden Sie es, um den Code zu identifizieren, der am schlimmsten ist. Es macht nur Sinn, den schlechtesten Code zu reparieren. etwas, das bereits unglaublich schnell und leicht, schneller und leichter ist, löst nicht dein Leistungsproblem.

  • Schreiben Sie den langsamen Code neu, damit er leistungsfähiger ist. (Dies ist das harte Bit.) Stellen Sie sicher, dass Sie es testen, um sicherzustellen, dass es wirklich besser ist.

  • Wenn Sie trotz Ihrer besten Bemühungen nicht gut genug sein können, bewerten Sie entweder Ihre Ziele neu oder brechen Sie das Projekt ab und verbringen Sie Ihre Zeit mit etwas, bei dem Sie erfolgreich sein können.

Wiederholen Sie dies, bis Sie etwas versenden.

    
Eric Lippert 23.02.2010 16:41
quelle
5

Grundsätzlich zuerst implementieren, dann testen, wo zu optimieren.

Wenn Sie Visual Studio Profissional verwenden, können Sie Analyse - & gt; Starten Sie den Performance-Assistenten, um die Methodenleistung zu analysieren. Ich bin mir nicht sicher, ob die anderen Versionen diese Funktion unterstützen, aber es gibt auch einige kommerzielle / freie Anwendungen um ... suche nach Profiler (siehe hier für eine Liste).

    
AxelEckenberger 23.02.2010 08:01
quelle
4

Geben Sie WIRKLICH schnell ein.

    
bobber205 23.02.2010 07:55
quelle
3

Sie sollten sich versteckte Funktionen von c # ansehen. Dieser Artikel behandelt die besten Praktiken in c # Entwicklung

    
RameshVel 23.02.2010 07:55
quelle
3

Sie können sich auf Rat davon beraten lassen. Aber beachten Sie: Vorzeitige Optimierung ist die Wurzel allen Übels.

    
fastcodejava 23.02.2010 08:12
quelle
3

Zielen Sie zuerst auf Korrektheit , danach auf Klarheit und nur dann auf Leistung .

Wie das alte Sprichwort sagt,

"Es interessiert niemanden, wie schnell Sie die falsche Antwort berechnen können"

(Verwenden Sie auf einem praktischen Niveau jedoch einen Profiler)

    
the_mandrill 23.02.2010 09:26
quelle
2

Wenn eine Methode immer schneller war als eine andere, würden sie nicht die langsamere einbeziehen.

Die einzige Invariante in Bezug auf die Leistung ist, dass Sie ein Profil erstellen müssen. Daraus ergibt sich alles.

    
Ken 23.02.2010 07:53
quelle
2

Wenn Sie einen Profiler bekommen, wird es Ihnen helfen, einige geben Ihnen sogar gute Tipps.

Beispiel: ANTS Profiler

Normalerweise werden Sie feststellen, dass die Anzahl der Male, die Sie Strings erstellen, die größte Leistungssteigerung ist, die Sie erzielen können.

Das und nicht mit dem Garbage Collector manuell zu tun (es sei denn, Sie wirklich wirklich wissen, was Sie tun)

Dieser Link zu Java-Designmustern ist viel zu kompliziert, lassen Sie sich nicht durch das Wort Java abschrecken, Sie können das, was sie für die Entwicklung lehren, in jeder Sprache verwenden.

Die Sache ist, wenn Sie wissen wollen, wann was zu tun ist und welche Methoden zu verwenden sind, über Designmuster sprechen Sie.

Ich wünschte, jemand hätte mir das früher in meiner Karriere gezeigt.

    
Ric Tokyo 23.02.2010 08:10
quelle
1

In Bezug auf allgemeine Hinweise:

  • Versuchen Sie, die wenigsten erforderlichen Schleifen zu verwenden
  • Wenn möglich, Code aus den Schleifen entfernen
  • Vermeiden Sie das Kopieren von Dingen (wie Strings) in Schleifen
  • Vermeiden Sie das Erstellen von Objekten in Schleifen
  • Cache, wo dies gerechtfertigt ist (im Allgemeinen kleine Objekte, die viel Zeit benötigen), aber stellen Sie sicher, dass Ihr Cache über eine gute Entsorgungsrichtlinie verfügt oder dass es zu einem Speicherleck wird
Gabe 23.02.2010 08:05
quelle
1

Sie können Ihr Programm im einheitlichen Modus kompilieren, um die Laufzeitleistung zu verbessern.

    
Jojo Sardez 23.02.2010 09:03
quelle
0

Eine Möglichkeit, dies selbst herauszufinden, ist eine Konsolen-App, in der Sie versuchen, einzelne Codeabschnitte gegeneinander zu synchronisieren und zeitlich zu steuern. Wie hier .

    
Eugene 23.02.2010 09:05
quelle

Tags und Links