سؤال

أقوم بإنشاء تطبيق يخفض المعلومات من صفحات الويب. للقيام بذلك ، اخترت استخدام مكشطة HTML تسمى JSoup لأنه بسيط جدا للاستخدام. يعتمد JSoup أيضًا على Apache Commons Lang Libray. (معا يشكلون ما مجموعه 385 كيلو بايت). لذلك سيتم استخدام JSoup لتنزيل الصفحة وتحليلها.

سؤالي هو ما إذا كان استخدام هذه المكتبات المبسطة ، بدلاً من استخدام مكتبات Androids مدمجة ، سيجعل تطبيقي أبطأ؟ (من حيث تنزيل البيانات والتحليل).

كنت أفكر في أن المكتبات الداخلية سيتم تحسينها لنظام Android.

هل كانت مفيدة؟

المحلول

إذا كان السؤال هو ، "هل ستجعل المكتبات الخارجية بطبيعتها أبطأ مما لو كتبت نفس الرمز بنفسي؟" ، الإجابة هي بشكل عام ، "نعم ، ولكن ليس كثيرًا".

سوف يستغرق الأمر JVM بعض الوقت لتحميل مكتبة خارجية. من المحتمل أن يكون للمكتبة وظائف أو ميزات لا تستخدمها ، وأن تحميلها أو قراءةها سيستغرق بعض الوقت. ولكن في معظم الحالات سيكون هذا الاختلاف تافهة ، ولن أقلق بشأنه إلا إذا كنت في بيئة مقيدة للغاية.

إذا كان ما تعنيه هو ، "هل يمكنني كتابة التعليمات البرمجية التي ستقوم بنفس الوظيفة بشكل أسرع من المكتبة الخارجية؟" ، الجواب هو ، "بالتأكيد نعم ، لكن هل يستحق وقتك؟"

الاحتمالات هي أن أي مكتبة خارجية تستخدمها ستحتوي على جميع أنواع الميزات التي لا تحتاجها ولكن يتم تضمينها لاستيعاب احتياجات الآخرين. لا يعرف مؤلفو المكتبة بالضبط ما هو كل مستخدم حتى يتعين عليهم التحسين بطريقة عامة. لذا ، إذا كتبت التعليمات البرمجية الخاصة بك ، فيمكنك أن تجعلها تفعل بالضبط ما تحتاجه ولا شيء أكثر من ذلك ، ويتم تحسينه بالضبط على ما أنت عليه.

ما إذا كان الأمر يستحق المشكلة في حالتك الخاصة هو السؤال الكبير.

نصائح أخرى

الإصدار التالي من JSoup لن تتطلب Apache Commons-Lang أو أي تبعيات خارجية أخرى ، والتي ترسل حجم الجرة إلى حوالي 115 ألف.

داخليًا ، تستخدم JSUP مكتبات Java القياسية (اتصال URL ، HashMap وما إلى ذلك) والتي سيتم تحسينها بشكل جيد بشكل معقول.

لقد قضيت وقتًا طويلاً في تحسين وقت تنفيذ Parse الخاص بـ JSoup وطرق استخراج البيانات ؛ وبالتأكيد إذا وجدت أي طرق لتحسينه ، فأنا كل آذان.

ستستخدم المكتبات الخارجية أيضًا المكتبات الداخلية التي تم تحسينها لنظام Android. أعتقد أن السؤال الحقيقي هو: هل سيكون تنفيذك المخصص أسرع من التنفيذ العام لهذه المكتبات؟

في معظم الحالات ، تحل مكتبات الطرف الثالث المشكلة التي تريد حلها ، ولكن أيضًا مشكلات أخرى قد لا تحتاج إلى حلها ، وهذا الجزء الذي قد يضر بالأداء. يجب عليك العثور على التوازن بين إعادة اختراع العجلة واستخدام التعليمات البرمجية المحسنة فقط لتلبية احتياجاتك الأساسية.

بالإضافة إلى ذلك ، إذا لم يتم تصميم هذه المكتبات مع وضع نظام Android في الاعتبار ، فتأكد من اختبارها على نطاق واسع.

إنها حجة Build-VS-Buy الكلاسيكية.

إذا كان أداء وقت التشغيل مهمًا حقًا لتطبيقك ، فيجب عليك التفكير في طرح تطبيقك الخاص أو تحسين المكتبة (على افتراض أنها مفتوحة المصدر.) ومع ذلك ، قبل أن تفعل ذلك يجب أن تعرف جيدًا أو سيئًا أداء المكتبة الحالية هو . لن تعرف أنه ما لم تستخدمه فعليًا والحصول على بعض البيانات.

كخطوة أولى ، أوصي باستخدام المكتبة وجمع البيانات المتعلقة بأدائها أو اسأل شخصًا استخدم بالفعل هذه المكتبة على Android لأرقام الأداء. قد تكون المكتبة بطيئة ، لكن إذا كانت مقبولة ، فأعتقد أنها أفضل من المتداول بمفردك.

ضع في اعتبارك عند إنشاء تطبيقك الخاص ، سيكلف وقتك وأموالك (التصميم والترميز والاختبار والصيانة.) لذلك تقوم بالتداول في أداء وقت التشغيل لإعادة الاستخدام وتكاليف التطوير المخفضة.

تحرير: نقطة أخرى مهمة هي أن الأداء هو وظيفة العديد من الأشياء. على سبيل المثال ، الجهاز وإصدار Android والشبكة. إذا كان جهازك المستهدف يعمل 2.1 أو أقل وقد تحصل على دفعة في الأداء باستخدام 2.2. من ناحية أخرى ، إذا كنت ترغب في استهداف جميع الإصدارات التي يتعين عليك تبني استراتيجية مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top