Im Allgemeinen ist die wichtigste Lösung für ein Problem diejenige, die tatsächlich existiert und für die Fälle gültig ist, wie sie für Ihr Problem existieren. Mit anderen Worten, vermeiden Sie vorzeitige Optimierung, bis Sie tatsächlich wissen, dass Sie ineffizienten Code haben oder effizienten Code, der schneller sein muss.
Vergessen Sie auch nicht, dass die beste Lösung für Ihre Anwendung möglicherweise nicht die allgemeine Falllösung ist. Fall und Punkt, vor ein paar Jahren gab ein Professor unserer Klasse ein Problem, bei dem wir die ersten 10 Zahlen eines bestimmten Typs drucken sollten (Entschuldigung, mein Gedächtnis versagt mir hinsichtlich des Typs, aber es war eine der ungewöhnlicheren Zahlen Klassen) und wir erhielten einen Test, um sicherzustellen, dass die Nummer vom angegebenen Typ war. Dies war das Ausmaß des Problems, das uns gegeben wurde, und es wurde uns mitgeteilt, dass es am nächsten Tag fällig sei und die effizienteste Lösung die volle Gutschrift erhalten würde. In der folgenden Vorlesung fasste der Professor die Ergebnisse zusammen:
- Einige Schüler verwendeten eine einfache Schleife und die bereitgestellte Formel, um zu überprüfen, ob die Zahlen korrekt waren, und zeigten sie an, langsam, aber erledigten die Arbeit, O (n ^ 3).
- Andere Studenten recherchierten und fanden eine Formel, mit der besser überprüft werden konnte, ob eine bestimmte Zahl gültig war. Diese Programme liefen viel schneller, O (n ^ 2).
- Ein Schüler verwendete die langsame Formel, um die Werte zu generieren, kopierte sie dann in ein konstantes Array in seinem Code und zeigte den Inhalt von O (n) an.
Die endgültige Lösung wurde vom Professor als die effizienteste beurteilt. Es stellt sich heraus, dass das Problem tatsächlich eine Übung war, um das Problem vollständig zu verstehen und nicht nur auszugehen und die effizienteste Lösung zu finden.
Der Punkt des oben Gesagten ist, dass es im Allgemeinen besser ist, sich Zeit zu nehmen, um sicherzustellen, dass Sie das Problem wirklich verstehen, bevor Sie Code schreiben oder versuchen, Code zu optimieren, wenn Sie eine effiziente Lösung für ein Problem finden möchten. Wenn Sie eine Reihe von Referenzwerten in einem konstanten Array speichern können, ist es vom Standpunkt der Leistung aus besser, dies zu tun, als zu versuchen, einen ausgefallenen Algorithmus zu schreiben.
Vergessen Sie auch nicht, dass für die meisten Anwendungen die Entwickler selbst die einzigen Personen sind, die dazu neigen, ineffizienten Code zu sehen (wenn er nicht unnötig ineffizient ist!). Wenn Sie sauberen Code schreiben, der nur genau das tut, was er tun muss, besteht die Wahrscheinlichkeit, dass die Benutzer bei der Arbeit mit Ihrem Programm die meiste Zeit keine Leistungsprobleme bemerken und nur die Teile optimieren, die sie erwähnen Du.