Frage

Wie kann man wählen, ob jemand ihre Designkompromisse in Form von optimierten Code rechtfertigen, die Klarheit der Umsetzung, Effizienz und Portabilität?

Ein relevantes Beispiel für die Zwecke dieser Frage könnte große Datei Handhabung sein, wo eine „große Datei“ ist „nicht wenige GB“ für ein Problem, das Direktzugriffsverfahren vereinfacht werden würde verwenden.

Ansätze zum Lesen und Ändern dieser Datei könnte sein:

  1. Verwenden Sie Ströme wie auch immer, und an die gewünschte Stelle suchen - die tragbar ist, aber möglicherweise langsam, und ist nicht klar -. Dies wird für praktisch alle Betriebssysteme arbeiten
  2. den entsprechenden Teil der Datei als einen großen Block abzubilden. ZB mmap für jeden Chunk eines 50MB Stück der Datei für die Verarbeitung, - Dies ist für viele Betriebssysteme funktionieren würde, auf den Feinheiten je mmap für das System der Implementierung
  3. .
  4. Sie einfach die gesamte Datei mmap -. Dies erfordert ein 64-Bit-Betriebssystem und ist die effizienteste und klare Art und Weise, dies zu implementieren, jedoch nicht auf 32-Bit-Betriebssystemen funktioniert
War es hilfreich?

Lösung

Nicht sicher, was Sie fragen, aber ein Teil des Design-Prozesses ist es, Anforderungen für die Portabilität und Leistung (neben anderen Faktoren) zu analysieren.

Wenn Sie wissen, dass Sie nie den Code zu portieren benötigen, und Sie müssen unbedingt die beste Leistung, dann passen Sie Ihre Implementierung entsprechend. Es gibt keinen Grund tragbar nur um ihrer selbst willen.

Beachten Sie auch, dass, wenn Sie sowohl die Leistung und Mobilität wollen, es gibt nichts, Sie von der Bereitstellung einer Implementierung für jede Plattform zu stoppen. Natürlich wird dies Ihre Kosten zu erhöhen, so wirklich, Ihnen seine bis Ihre Bedürfnisse zu priorisieren.

Andere Tipps

Ohne Einschränkungen, diese Frage kann rational nicht rational beantwortet werden.

Sie fragen: „Was ist die beste Farbe“ ohne uns zu sagen, ob Sie ein Haus oder ein Auto oder ein Bild zu malen.

Einschränkungen würden mindestens umfassen

  • Sprache der Wahl
  • Zielplattformen (Multi-CPU-Industrial-Grade-Server oder iPhone?)
  • Optimierung für Geschwindigkeit vs. Speicher
  • Kosten (wer die Finanzierung dieser und gibt es eine Lieferbeschränkung?)

Kein Stück Software kann mit der "ultimative" Portabilität haben.

Ein Beispiel für diese Art von Problem behandelt wird, um eine Vielzahl von Methoden, aber mit einer engen Einschränkung sowohl auf der spezifischen Eingabe / Ausgabe erforderlich und die Messung der „beste“ wäre der WideFinder Projekt.

Grundsätzlich müssen Sie zuerst denken, bevor Codierung. Jedes Projekt ist einzigartig und eine Analyse der Bedürfnisse könnte helfen, zu entscheiden, was für sich ursprünglich ist. Was die beste Lösung für jedes Projekt hängt von ein paar Dinge machen ...

Zunächst einmal wird dieses Projekt benötigen oder eventuell mehr Plattformen sein? Je nach Ihrer Wahl, sollte die richtige Programmiersprache der Wahl einfacher. Dann wieder können Sie auch mehr als eine Sprache in Ihrem Projekt verwenden, und das ist völlig normal. Portabilität bedeutet nicht unbedingt weniger Leistung. es bedeutet nur, dass es schwierige Arbeit beinhaltet Ihre Ziele zu erreichen, weil Sie Qualitätscode benötigen. Auch hat jede Programmiersprache seine eigene Philosophie. Erfahren Sie, was sie sind. Eine Sache ist sicher, bestimmte Probleme häufig wieder über kommen und immer wieder. Aus diesem Grund ist die unterschiedliche Design prasselt wissen manchmal einen Unterschied machen kann, aber einige Sprachen haben ihre eigenen Idiome und kann sehr relevant sein, wenn eine Sprache wählen. Eine andere Sache, einige Gedanken braucht, ist die verschiedenen Ansätze, die Sie für Ihr Projekt haben kann. Multithreading, Sockets, Client / Server-Systeme und viele andere Technologien sind alle da für Sie zu nutzen. die richtige Technologie zu wählen kann helfen, ein Projekt besser zu machen.

, die Bedürfnisse und die verschiedenen heute verfügbaren Lösungen wissen, ist, was entscheiden wird helfen, wenn die Zeit für die verschiedenen Vor- und Nachteile wählen kommt.

Es hängt wirklich von den Treibern für das Projekt. Wenn Sie in-house Unternehmen dev tun, dann tut die einfachste Sache, die auf dem Ziel hardare funktionieren könnte. Mod für die Leistung reqs nach Bedarf.

Wenn Sie wissen, müssen Sie verschiedene Hardware-Plattformen am Tag 1 unterstützen, dann werden Sie klar brauchen eine portable Implementierung zu wählen oder mehrere Ansätze verwendet werden.

Portabilität halber Portabilität hat seit dem Anfang ein Marketing-spiel für Java war und ist eine Tatsache des Lebens für C durch Konvention, und ich glaube, die meisten Menschen, die durch sie „groß“ geworden mit Java oder C wird sagen, dass einzuhalten.

Allerdings stimmt, wird absolute Portabilität nur für die meisten trivial bei den meisten Anwendungen mit mittlerer Komplexität wahr sein -. Alles mit hohen Komplexität wird spezielle Optimierungen benötigen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top