質問

私は、Webページから情報を削るアプリを構築しています。それを行うために、私は呼ばれるHTMLスクレーパーを使用することを選択しました jsoup 使いやすいからです。 JSoupは、Apache Commons Lang Librayにも依存しています。 (一緒に合計385kbを構成します)。したがって、JSOUPはページをダウンロードして解析するために使用されます。

私の質問は、これらの簡素化ライブラリを使用すると、Androidが組み込まれたライブラリを使用する代わりに、アプリが遅くなるかどうかです。 (データのダウンロードと解析の観点から)。

内部ライブラリはAndroid用に最適化されると考えていました。

役に立ちましたか?

解決

質問が「外部ライブラリは、自分で同じコードを書いた場合よりも私のアプリを本質的に遅くするのでしょうか?」という場合、答えは一般的に「はい、しかしそれほどではありません」。

外部ライブラリをロードするのにJVMが時間がかかります。ライブラリには使用していない機能または機能があり、これらを読み込んだり、それらを過ぎて読んだりするには時間がかかる可能性があります。しかし、ほとんどの場合、この違いは些細なことであり、あなたが非常に制約されている環境にいない限り、私はそれについて心配することはありません。

あなたが意味するのは、「外部ライブラリよりも速く同じ関数を実行するコードを書くことはできますか?」という場合、答えは「ほぼ確実にはいですが、あなたの時間の価値はありますか?」

使用する外部ライブラリには、他の人のニーズを伴うために含まれているが含まれているが含まれているあらゆる種類の機能があるという可能性があります。ライブラリの著者は、すべてのユーザーが何をしているかを正確に知らないため、一般的な方法で最適化する必要があります。したがって、独自のコードを書いた場合、必要なことやそれ以上のことを正確に実行させ、正確に最適化することができます。

あなたの特定のケースで問題に値するかどうかは大きな問題です。

他のヒント

次のリリース jsoup Apache Commons-Langまたはその他の外部依存関係は必要ありません。これにより、瓶のサイズが約115kになります。

内部的には、JSOUPは標準のJavaライブラリ(URL接続、ハッシュマップなど)を使用します。

JSOUPの解析時間とデータ抽出方法の最適化にかなりの時間を費やしました。そして確かに、あなたがそれを改善する方法を見つけたら、私はすべて耳です。

外部ライブラリは、Android向けに最適化された内部ライブラリも使用します。本当の質問は、あなたのカスタム実装は、これらのライブラリの一般的な実装よりも高速になるでしょうか?

ほとんどの場合、サードパーティライブラリは、解決したい問題を解決しますが、解決する必要のない他の問題も解決します。パフォーマンスを損なう可能性のあるのはこの部分です。ホイールを再発明することと、基本的なニーズのためだけに最適化されたコードを使用することとのバランスを見つける必要があります。

さらに、これらのライブラリがAndroidプラットフォームを念頭に置いて設計されていない場合は、必ず広範囲にテストしてください。

それは古典的なビルドVS-Buyの議論です。

ランタイムのパフォーマンスがアプリケーションにとって非常に重要な場合は、独自の実装を展開したり、ライブラリを最適化したりすることを検討する必要があります(オープンソースであると仮定します)。 。実際にそれを使用してデータを取得しない限り、あなたはそれを知りません。

最初のステップとして、ライブラリを使用してパフォーマンスに関するデータを収集するか、Androidでこのライブラリをすでに使用している人にパフォーマンス番号を尋ねることをお勧めします。ライブラリは遅いかもしれませんが、受け入れられる場合は、自分で転がるよりも優れていると思います。

独自の実装を作成すると、時間とお金(設計、コーディング、テスト、メンテナンス)の費用がかかります。したがって、再利用と開発コストの削減のためにランタイムパフォーマンスを取引しています。

編集:もう1つの重要なポイントは、パフォーマンスが多くの機能の関数であることです。たとえば、ハードウェア、Androidバージョン、ネットワーク。ターゲットデバイスが2.1以下で実行されている場合、2.2を使用してパフォーマンスが向上する可能性があります。一方、すべてのバージョンをターゲットにしたい場合は、別の戦略を採用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top