5

Web ページから情報をスクレイピングするアプリを作成しています。そのために、 Jsoupという名前の html スクレーパーを使用することにしました。これは非常に使いやすいためです。Jsoup は、Apache Commons Lang ライブラリにも依存しています。(合計で 385kB になります)。そのため、Jsoup を使用してページをダウンロードし、解析します。

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

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

4

4 に答える 4

8

jsoupの次のリリースでは、Apache Commons-Lang やその他の外部依存関係が不要になり、jar サイズが約 115K に削減されます。

内部的には、jsoup は標準の Java ライブラリ (URL 接続、HashMap など) を使用しており、Android に最適化されています。

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

于 2010-08-10T21:15:58.337 に答える
3

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

JVM が外部ライブラリをロードするには、しばらく時間がかかります。ライブラリには、使用していない関数や機能が含まれている可能性があり、これらの読み込みや過去の読み取りには時間がかかります。しかし、ほとんどの場合、この違いは取るに足らないものであり、非常に制約のある環境でない限り、私は気にしません。

「外部ライブラリよりも高速に同じ機能を実行するコードを記述できますか?」ということであれば、答えは「ほぼ確実にそうですが、時間を割く価値はありますか?」です。

おそらく、使用する外部ライブラリには、必要のないあらゆる種類の機能が含まれていますが、他の人のニーズに対応するために含まれています。ライブラリの作成者は、すべてのユーザーが何をしているのかを正確に把握していないため、一般的な方法で最適化する必要があります。したがって、独自のコードを記述した場合は、必要なことだけを正確に実行し、目的に合わせて最適化することができます。

あなたの特定のケースでトラブルに見合う価値があるかどうかは、大きな問題です。

于 2010-08-10T21:33:08.500 に答える
1

これは、古典的なビルド vs 購入の議論です。

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

最初のステップとして、ライブラリを使用してパフォーマンスに関するデータを収集することをお勧めします。または、Android でこのライブラリを既に使用している人にパフォーマンスの数値を尋ねることをお勧めします。ライブラリは遅いかもしれませんが、それが許容できるのであれば、自分で作成するよりはましだと思います。

独自の実装を作成する場合は、時間と費用 (設計、コーディング、テスト、および保守) がかかることに注意してください。したがって、再利用と開発コストの削減のためにランタイム パフォーマンスをトレードオフすることになります。

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

于 2010-08-10T20:33:42.793 に答える
1

外部ライブラリは、Android 用に最適化された内部ライブラリも使用します。本当の問題は、これらのライブラリの汎用実装よりもカスタム実装の方が速いかどうかということだと思います。

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

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

于 2010-08-10T19:26:13.907 に答える