Frage

Ich baue eine app, die Schrammen Informationen von Webseiten. Zu tun, dass ich gewählt hat, einen HTML-Schaber verwendet namens Jsoup , weil es so einfach zu bedienen ist. Jsoup ist auch abhängig von Apache Commons Lang libray. (Zusammen bilden sie insgesamt 385KB bilden). So Jsoup verwendet werden, um die Seite und analysiert es zum Download.

Meine Frage ist, ob die Verwendung dieser Vereinfachung Bibliotheken, anstelle der Verwendung von Androids integrierte Bibliotheken, meine App langsamer machen? (In Bezug auf das Herunterladen von Daten und Parsen).

Ich dachte, dass die internen Bibliotheken für Android optimiert werden würde.

War es hilfreich?

Lösung

Wenn die Frage ist: „Wollen externe Bibliotheken INHäRENT meine Anwendung langsamer, als wenn ich den gleichen Code selbst geschrieben hätte?“, Ist die Antwort im Allgemeinen: „Ja, aber nicht sehr viel.“

Es wird die JVM einige Zeit dauern, um eine externe Bibliothek zu laden. Es ist wahrscheinlich, dass die Bibliothek verfügt über Funktionen oder Funktionen, die Sie nicht verwenden, und laden Sie diese oder Lesen an ihnen vorbei einige Zeit dauern wird. Aber in den meisten Fällen wird dieser Unterschied trivial sein, und ich würde mir keine Sorgen, wenn Sie in einer stark eingeschränkten Umgebung sind.

Wenn Sie das meinen ist: „Kann ich Code schreiben, der die gleiche Funktion schneller als eine externe Bibliothek tun?“, Lautet die Antwort: „Mit ziemlicher Sicherheit ja, aber ist es wert Ihre Zeit?“

Die Chancen sind, dass jede externe Bibliothek Sie verwenden werden, alle möglichen Funktionen, die Sie nicht brauchen, sondern sind enthalten, um die Bedürfnisse der anderen zu empfangen. Die Autoren der Bibliothek nicht genau wissen, was jeder Benutzer ist, so dass sie in allgemeiner Weise zu optimieren haben. Also, wenn Sie Ihren eigenen Code geschrieben haben, man könnte es genau tun, was Sie brauchen, und nichts mehr, und genau optimiert werden, was Sie sind bis zu.

Ob es lohnt sich die Mühe in Ihrem speziellen Fall ist die große Frage.

Andere Tipps

Die nächste Version von jsoup nicht Apache Commons-Lang oder andere externe Abhängigkeiten erfordern, die auf der Dose bringt Größe auf etwa 115K.

Intern jsoup verwendet Standard-Java-Bibliotheken (URL-Verbindung, HashMap usw.), die einigermaßen gut gehen sein Android optimiert.

Ich habe eine gute Zeit verbracht jsoup die Parse-Ausführungszeit und Datenextrahierers Methoden zu optimieren; und erst recht, wenn Sie irgendwelche Möglichkeiten zu finden, sie zu verbessern, ich bin ganz Ohr.

Die externen Bibliotheken werden auch die internen Bibliotheken verwenden, die für Android optimiert ist. Ich denke, die wirkliche Frage ist: würde Ihre benutzerdefinierte Implementierung schneller sein als die generische Implementierung dieser Bibliotheken

?

In den meisten Fällen Bibliotheken von Drittanbietern das Problem zu lösen, dass Sie lösen wollen, aber auch andere Probleme, die Sie nicht zu lösen brauchen könnten, und es ist dieser Teil das könnte wehe Leistung. Sie haben die Balance finden zwischen dem Rad neu erfinden und optimierte Code nur für Ihre Grundbedürfnisse.

Außerdem, wenn diese Bibliotheken nicht mit der Android-Plattform konzipiert wurden, stellen Sie sicher, dass sie ausgiebig zu testen.

Es ist das klassische Build-vs-buy Argument.

Wenn Laufzeitleistung für Ihre Anwendung wirklich wichtig ist, dann sollten Sie prüfen, eine eigene Implementierung Ausrollen oder die Bibliothek zu optimieren (vorausgesetzt, es Open Source ist.) Doch bevor Sie tun, dass Sie die Leistung der guten oder schlechten wissen sollten bestehende Bibliothek ist. Sie werden nicht wissen, dass, wenn Sie es tatsächlich nutzen und einige Daten bekommen.

Als erster Schritt würde ich empfehlen, die Bibliothek und collect Daten unter Verwendung ihrer Leistung in Bezug auf oder fragen Sie jemanden, der bereits diese Bibliothek für Performance-Zahlen auf Android verwendet hat. Die Bibliothek kann langsam sein, aber wenn es akzeptabel ist, dann denke ich, es ist besser als eine auf Ihrem eigenen Rollen.

Beachten Sie, wenn Sie Ihre eigene Implementierung schaffen es Ihre Zeit und Geld kosten (Design, Programmierung, Test und Wartung.) Damit Sie aus Laufzeit-Performance für die Wiederverwendung sind Handel und reduziert Entwicklungskosten.

EDIT: Ein weiterer wichtiger Punkt ist, dass die Leistung eine Funktion von vielen Dingen. Zum Beispiel kann die Hardware, die Android-Version und das Netzwerk. Wenn Ihr Zielgerät 2.1 oder weniger läuft und Sie können unter Verwendung von 2.2 eine Steigerung der Leistung. Auf der anderen Seite, wenn Sie alle Versionen Ziel wollen Sie eine andere Strategie verfolgen müssen.

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