Question

Je construis une application qui centralise les informations écorchures des pages Web. Pour ce faire, je l'ai choisi d'utiliser un grattoir html appelé Jsoup parce qu'il est si simple à utiliser. Jsoup est également dépendant Apache Commons Lang libray. (Ensemble, ils forment un total de 385KB). Alors Jsoup sera utilisé pour télécharger la page et l'analyser.

Ma question est de savoir si l'utilisation de ces bibliothèques simplificatrices, au lieu d'utiliser androïdes intégré dans les bibliothèques, fera mon application plus lente? (En termes de téléchargement de données et l'analyse syntaxique).

Je pensais que les bibliothèques internes seraient optimisés pour Android.

Était-ce utile?

La solution

Si la question est: « Est-bibliothèques externes INTRINSÈQUEMENT faire mon application plus lent que si je l'ai écrit le même code moi-même? », La réponse est généralement: « Oui, mais pas beaucoup. »

Il prendra la JVM un certain temps pour charger une bibliothèque externe. Il est probable que la bibliothèque possède des fonctions ou des fonctionnalités que vous n'utilisez pas, et le chargement, ou en lisant devant eux prendra un certain temps. Mais dans la plupart des cas, cette différence sera trivial, et je ne vous inquiétez pas, sauf si vous êtes dans un environnement fortement contraint.

Si ce que vous voulez dire, « code d'écriture Puis-je qui va faire la même fonction plus rapide qu'une bibliothèque externe? », La réponse est: « Presque certainement oui, mais est-il utile de votre temps? »

Les chances sont que toute bibliothèque externe que vous utilisez aura toutes sortes de fonctionnalités que vous n'avez pas besoin, mais sont inclus pour accueillir les besoins des autres. Les auteurs de la bibliothèque ne savent pas exactement ce que chaque utilisateur jusqu'à ils doivent optimiser d'une manière générale. Donc, si vous avez écrit votre propre code, vous pouvez le faire faire exactement ce dont vous avez besoin et rien de plus, et être optimisé pour exactement ce que vous êtes.

si ça vaut la peine dans votre cas particulier est la grande question.

Autres conseils

La prochaine version de jsoup ne nécessite pas Apache Commons-Lang ou d'autres dépendances externes, ce qui fait baisser le pot taille à environ 115K.

En interne, jsoup utilise des bibliothèques Java standard (connexion URL, HashMap, etc.) qui vont être assez bien Android optimisé.

J'ai passé une bonne quantité de temps à optimiser Parse méthodes extracteur de temps et de données d'exécution de jsoup; et certainement si vous trouvez des façons de l'améliorer, je suis tout ouïe.

Les bibliothèques externes utiliseront également les bibliothèques internes qui sont optimisées pour Android. Je suppose que la vraie question est: ce que votre implémentation personnalisée plus rapide que la mise en œuvre générique de ces bibliothèques

?

Dans la plupart des cas, les bibliothèques tiers résoudre le problème que vous voulez résoudre, mais aussi d'autres problèmes que vous pourriez ne pas avoir besoin de résoudre, et il est cette partie que la performance pourrait blessé. Vous devez trouver l'équilibre entre réinventer la roue et en utilisant le code optimisé juste pour vos besoins de base.

En outre, si ces bibliothèques ne sont pas conçus avec la plate-forme Android à l'esprit, assurez-vous de les tester en profondeur.

Il est l'argument build-vs-achat classique.

Si la performance d'exécution est vraiment important pour votre application, vous devriez envisager le déploiement de votre propre implémentation ou l'optimisation de la bibliothèque (en supposant qu'il est open source.) Cependant, avant de vous faire que vous devez savoir bonne ou mauvaise la performance du bibliothèque existante est. Vous ne saurez pas que si vous utilisez réellement et obtenir des données.

Dans un premier temps, je vous recommande d'utiliser la bibliothèque et les données concernant les frais virés ses performances ou demander à quelqu'un qui a déjà utilisé cette bibliothèque sur Android pour les numéros de performance. La bibliothèque peut être lente, mais si elle est acceptable alors je suppose qu'il vaut mieux que rouler l'un sur votre propre.

Gardez à l'esprit lorsque vous créez votre propre implémentation il vous en coûtera votre temps et d'argent (conception, codage, tests et maintenance.) Donc, vous faites du commerce hors performances d'exécution pour la réutilisation et la réduction des coûts de développement.

EDIT: Un autre point important est que la performance est fonction de beaucoup de choses. Par exemple, le matériel, la version Android et le réseau. Si votre appareil cible est en cours d'exécution 2.1 ou moins et vous pouvez obtenir un coup de pouce de la performance en utilisant 2.2. D'autre part, si vous souhaitez cibler toutes les versions que vous devez adopter une stratégie différente.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top