জামারিন সি # এবং জাভাতে লেখা অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির পারফরম্যান্সের তুলনা করে কারও কি বেঞ্চমার্ক (কোড এবং ফলাফল) রয়েছে? [বন্ধ]


544

আমি জামরিনের দাবিতে এসেছি যে অ্যান্ড্রয়েডে তাদের মনো বাস্তবায়ন এবং তাদের সি # সংকলিত অ্যাপ্লিকেশনগুলি জাভা কোডের চেয়ে দ্রুত। এই জাতীয় দাবিগুলি যাচাই করার জন্য কেউ কি বিভিন্ন অ্যান্ড্রয়েড প্ল্যাটফর্মগুলিতে খুব অনুরূপ জাভা এবং সি # কোডে প্রকৃত বেঞ্চমার্ক সম্পাদন করেছে, কোড এবং ফলাফল পোস্ট করতে পারে?

18 ই জুন, 2013 যোগ করা হয়েছে

যেহেতু কোনও উত্তর ছিল না এবং অন্যরা এই জাতীয় মানদণ্ডগুলি খুঁজে পেতে পারেনি, তাই আমার নিজের পরীক্ষা করার সিদ্ধান্ত নিয়েছে। দুর্ভাগ্যক্রমে, আমার প্রশ্নটি "তালাবন্ধ" রয়ে গেছে তাই আমি উত্তর হিসাবে এটি পোস্ট করতে পারি না, কেবলমাত্র প্রশ্নটি সম্পাদনা করুন। এই প্রশ্নটি পুনরায় খুলতে দয়া করে ভোট দিন। সি # এর জন্য, আমি জামারিন.এন্ড্রয়েড ভেরি ব্যবহার করেছি। 4.7.09001 (বিটা) উত্স কোড, আমি APK প্যাকেজগুলি পরীক্ষার জন্য এবং সংকলনের জন্য ব্যবহার করেছি এমন সমস্ত ডেটা গিটহাবে রয়েছে:

জাভা: https://github.com/gregko/TtsSetup_Java

সি #: https://github.com/gregko/TtsSetup_C_sharp

কেউ যদি অন্য ডিভাইস বা ইমুলেটরগুলিতে আমার পরীক্ষাগুলির পুনরাবৃত্তি করতে চান তবে আমি ফলাফলগুলিও জানতে আগ্রহী হব।

আমার পরীক্ষার ফলাফল

আমি আমার বাক্য নিষ্কাশনকারী শ্রেণিকে সি # তে পোর্ট করেছি (আমার @ ভয়েস অলৌড রিডার অ্যাপ্লিকেশন থেকে) এবং ইংরেজি, রাশিয়ান, ফরাসী, পোলিশ এবং চেক ভাষায় 10 টি HTML ফাইলের জন্য কিছু পরীক্ষা চালিয়েছি। প্রতিটি রান সমস্ত 10 ফাইলে 5 বার সম্পাদিত হয়েছিল এবং 3 টি পৃথক ডিভাইস এবং একটি এমুলেটরের জন্য মোট সময় নীচে পোস্ট করা হয়েছে। আমি "রিলিজ" বিল্ডগুলি কেবলমাত্র ডিবাগিং সক্ষম না করেই পরীক্ষিত করেছি।

এইচটিসি নেক্সাস ওয়ান অ্যান্ড্রয়েড 2.3.7 (এপিআই 10) - সায়ানোজেনমড রম

জাভা: গ্র্যান্ড টোটাল সময় (5 রান): 12361 এমএস, ফাইল পঠন মোট সহ: 13304 এমএস

সি #: গ্র্যান্ড টোটাল টাইম (5 রান): 17504 এমএস, ফাইল পঠন মোট সহ: 17956 এমএস

স্যামসং গ্যালাক্সি এস 2 এসজিএইচ-আই 777 (অ্যান্ড্রয়েড 4.0.4, এপিআই 15) - সায়ানোজেনমড রম

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): 8947 এমএস, ফাইল পড়ার সাথে মোট: 9186 এমএস

সি #: গ্র্যান্ড টোটাল টাইম (5 রান): 9884 এমএস, ফাইল পড়ার সাথে মোট: 10247 এমএস

স্যামসাং জিটি-এন 7100 (অ্যান্ড্রয়েড 4.1.1 জেলিবিয়ান, এপিআই 16) - স্যামসুং রম

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): 9742 এমএস, ফাইল পড়ার সাথে মোট: 10111 এমএস

সি #: গ্র্যান্ড টোটাল টাইম (5 রান): 10459 এমএস, ফাইল পঠন মোট সহ: 10696 এমএস

এমুলেটর - ইন্টেল (অ্যান্ড্রয়েড 4.2, এপিআই 17)

জাভা: গ্র্যান্ড টোটাল টাইম (৫ রান): ২ reading৯৯৯ এমএস, মোট ফাইল রিডিং সহ: ৩27২27 এমএস

সি #: গ্র্যান্ড মোট সময় (5 রান): ফাইল পঠন সহ মোট 2049 এমএস: 2182 এমএস

এমুলেটর - ইন্টেল (অ্যান্ড্রয়েড 2.3.7, এপিআই 10)

জাভা: গ্র্যান্ড মোট সময় (5 রান): ফাইল পঠন সহ মোট 2992 এমএস, 3591 এমএস

সি #: গ্র্যান্ড মোট সময় (5 রান): ফাইল পঠন সহ মোট 2049 এমএস, 2257 এমএস

এমুলেটর - আর্ম (অ্যান্ড্রয়েড 4.0.4, এপিআই 15)

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): ফাইল পঠন মোট সহ: 41751 এমএস, 43866 এমএস

সি #: গ্র্যান্ড মোট সময় (5 রান): 44136 এমএস, ফাইলের পঠন মোট সহ: 45109 এমএস

সংক্ষিপ্ত আলোচনা

আমার পরীক্ষার কোডটিতে মূলত পাঠ্য বিশিষ্টকরণ, প্রতিস্থাপন এবং রেজেক্স অনুসন্ধান রয়েছে, সম্ভবত অন্যান্য কোডের জন্য (যেমন আরও সংখ্যাসূচক ক্রিয়াকলাপ) ফলাফলগুলি ভিন্ন হবে। এআরএম প্রসেসরযুক্ত সমস্ত ডিভাইসে জাভা জামিন সি # কোডের চেয়ে আরও ভাল পারফর্ম করেছে। বৃহত্তম পার্থক্যটি অ্যান্ড্রয়েড ২.৩ এর অধীনে ছিল, যেখানে সি # কোড প্রায় চালিত হয়। জাভা গতির 70%।

ইন্টেল এমুলেটরটিতে (ইনটেল হ্যাক্স প্রযুক্তির সাথে, এমুলেটর দ্রুত পারফেক্ট মোডে চলে), জামারিন সি # কোডটি আমার নমুনা কোডটি জাভা থেকে অনেক বেশি দ্রুত চালায় - প্রায় 1.35 বার দ্রুত। এএমএমের চেয়ে মনো ভার্চুয়াল মেশিন কোড এবং লাইব্রেরিগুলি ইন্টেলের চেয়ে আরও ভাল?

জুলাই 8, 2013 সম্পাদনা করুন

আমি সবেমাত্র জেনিমোশন অ্যান্ড্রয়েড এমুলেটর ইনস্টল করেছি, যা ওরাকল ভার্চুয়ালবক্সে সঞ্চালিত হয় এবং এটি আবার এআরএম প্রসেসরকে এমুলেটিং করে না, দেশীয় ইন্টেল প্রসেসর ব্যবহার করে। ইন্টেল HAX এমুলেটর হিসাবে, আবার সি # এখানে আরো দ্রুত চালিত হয়। আমার ফলাফলগুলি এখানে:

জিনমোশন ইমুলেটর - ইন্টেল (অ্যান্ড্রয়েড 4.1.1, এপিআই 16)

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): 2069 এমএস, ফাইলের পঠন মোট সহ: 2248 এমএস

সি #: গ্র্যান্ড মোট সময় (5 রান): 1544 এমএস, ফাইল পঠন মোট সহ: 1642 এমএস

আমি তখন লক্ষ্য করেছি যে জ্যামারিন.অ্যান্ড্রয়েড বিটা, সংস্করণ 4.7.11 এর আপডেট ছিল, সাথে মনো-রানটাইমের কিছু পরিবর্তন উল্লেখ করার সাথে রিলিজ নোটসও রয়েছে। কিছু এআরএম ডিভাইসগুলি দ্রুত পরীক্ষা করার সিদ্ধান্ত নিয়েছে এবং বড় চমক - সি # সংখ্যা উন্নত করেছে:

বিএন নুক এক্সডি +, এআরএম (অ্যান্ড্রয়েড 4.0)

জাভা: গ্র্যান্ড টোটাল সময় (5 রান): 8103 এমএস, ফাইল পঠন মোট সহ: 8569 এমএস

সি #: গ্র্যান্ড টোটাল সময় (5 রান): 7951 এমএস, ফাইল পঠন মোট সহ: 8161 এমএস

কি দারুন! সি # এখন জাভা চেয়ে ভাল? আমার গ্যালাক্সি নোট 2 এ পরীক্ষাটি পুনরাবৃত্তি করার সিদ্ধান্ত নিয়েছে:

স্যামসং গ্যালাক্সি নোট 2 - এআরএম (অ্যান্ড্রয়েড 4.1.1)

জাভা: গ্র্যান্ড টোটাল সময় (5 রান): 9675 এমএস, ফাইল পঠন মোট সহ: 10028 এমএস

সি #: গ্র্যান্ড মোট সময় (5 রান): 9911 এমএস, ফাইলের পঠন মোট সহ: 10104 এমএস

এখানে সি # কেবল সামান্য ধীর বলে মনে হচ্ছে, তবে এই সংখ্যাগুলি আমাকে একটি বিরতি দিয়েছে: নোট 2-তে একটি দ্রুত প্রসেসর থাকা সত্ত্বেও সময়টি কেন নুক এইচডি + এর চেয়ে বেশি? উত্তর: পাওয়ার সাশ্রয় মোড। নুক-এ, এটি অক্ষম করা হয়েছিল, নোট 2-এ সক্ষম হয়েছে। পাওয়ার সাশ্রয় মোড অক্ষম করে পরীক্ষা করার সিদ্ধান্ত নিয়েছে (সক্ষম হিসাবে এটি প্রসেসরের গতিও সীমাবদ্ধ করে):

স্যামসং গ্যালাক্সি নোট 2 - এআরএম (অ্যান্ড্রয়েড 4.1.1), পাওয়ার সাশ্রয় অক্ষম

জাভা: গ্র্যান্ড টোটাল সময় (5 রান): 7153 এমএস, ফাইল পঠন মোট সহ: 7459 এমএস

সি #: গ্র্যান্ড টোটাল টাইম (5 রান): 6906 এমএস, ফাইল পঠন মোট সহ: 7070 এমএস

এখন আশ্চর্যজনকভাবে, সিআরটি এআরএম প্রসেসরের জাভা থেকেও কিছুটা দ্রুত। বড় উন্নতি!

12 জুলাই, 2013 সম্পাদনা করুন

আমরা সকলেই জানি যে, গতির জন্য কোনও কিছুই দেশীয় কোডকে আঘাত করে না, এবং জাভা বা সি # তে আমার বাক্য বিভাজনের পারফরম্যান্সে আমি সন্তুষ্ট নই, বিশেষত আমার এটির উন্নতি করতে হবে (এবং এটি এটিকে আরও ধীর করে তুলুন)। এটি সি ++ এ পুনরায় লেখার সিদ্ধান্ত নিয়েছে। আমার গ্যালাক্সি নোট 2-তে নেটিভ বনাম জাভার গতির তুলনা এখানে একটি ছোট (অর্থাত্ পূর্ববর্তী পরীক্ষার তুলনায় ফাইলগুলির একটি ছোট সেট, অন্যান্য কারণের জন্য), পাওয়ার সাশ্রয় মোড অক্ষম করে:

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): 3292 এমএস, ফাইল পঠন সহ মোট: 3454 এমএস

নেটিভ থাম্ব: গ্র্যান্ড টোটাল টাইম (৫ রান): ফাইল পড়ার সাথে মোট: 53 657 এমএস

নেটিভ আর্ম: গ্র্যান্ড মোট সময় (5 রান): 458 এমএস, ফাইল পঠন মোট সহ: 587 এমএস

আমার নির্দিষ্ট পরীক্ষার জন্য দেখে মনে হচ্ছে, নেটিভ কোডটি জাভা থেকে 6 থেকে 7 গুণ দ্রুত। ক্যাভ্যাট: অ্যান্ড্রয়েডে স্টাড :: রেজেক্স ক্লাস ব্যবহার করতে পারেনি, তাই অনুচ্ছেদে বিরতি বা এইচটিএমএল ট্যাগ অনুসন্ধানের জন্য আমার নিজস্ব বিশেষ রুটিন লিখতে হয়েছিল। রেগেক্স ব্যবহার করে পিসিতে একই কোডের আমার প্রাথমিক পরীক্ষাগুলি জাভা থেকে প্রায় 4 থেকে 5 গুণ বেশি দ্রুত ছিল।

রাম রাম! চর * বা উইচার * পয়েন্টার দিয়ে আবার কাঁচা স্মৃতি জাগানো, আমি তাত্ক্ষণিকভাবে 20 বছর কম অনুভব করেছি! :)

15 জুলাই, 2013 সম্পাদনা করুন

(ডট 42 এর সাথে আরও ভাল ফলাফলের জন্য দয়া করে নীচে দেখুন 7/30/2013 এর সম্পাদনাগুলি সহ)

কিছুটা অসুবিধা নিয়ে, আমি আমার সি # টেস্টগুলি অ্যান্ড্রয়েডের অন্য সি # প্ল্যাটফর্ম ডট 42 (সংস্করণ 1.0.1.71 বিটা) এ পোর্ট করতে পেরেছি। প্রাথমিক ফলাফলগুলি দেখায় যে ডট 42 কোডটি ইনটেল অ্যান্ড্রয়েড এমুলেটরটিতে জামারিন সি # (v। 4.7.11) এর চেয়ে প্রায় 3x (3 গুণ) ধীরে ধীরে। একটি সমস্যা হ'ল Dot42- এ System.Text.RegularExpressions ক্লাসে স্প্লিট () ফাংশন নেই যা আমি Xamarin টেস্টগুলিতে ব্যবহার করেছি, সুতরাং আমি এর পরিবর্তে জাভা.উটি.এল.গ্রেজ ক্লাস এবং জাভা.Util.Regex.Pattern.Split () ব্যবহার করেছি সুতরাং কোডের এই নির্দিষ্ট জায়গায় এই ছোট পার্থক্য রয়েছে। যদিও বড় সমস্যা হওয়া উচিত নয়। ডট 42 ডালভিক (ডেক্স) কোডে সংকলন করে, সুতরাং এটি জাভেরিনের মতো সি # থেকে জাভা পর্যন্ত ব্যয়বহুল ইন্টারপের প্রয়োজন হয় না, তাই এটি অ্যান্ড্রয়েডে জাভার সাথে সহযোগিতা করে।

কেবল তুলনা করার জন্য, আমি এআরএম ডিভাইসগুলিতেও পরীক্ষা চালাচ্ছি - এখানে ডট 42 কোডটি "কেবল" 2 এক্স Xamarin সি # এর চেয়ে ধীর গতিতে রয়েছে। আমার ফলাফলগুলি এখানে:

এইচটিসি নেক্সাস ওয়ান অ্যান্ড্রয়েড 2.3.7 (এআরএম)

জাভা: গ্র্যান্ড টোটাল সময় (5 রান): 12187 এমএস, ফাইল পঠন মোট সহ: 13200 এমএস

জামারিন সি #: গ্র্যান্ড মোট সময় (5 রান): মোট 1394 এমএস, ফাইল পঠন মোট সহ: 14465 এমএস

ডট 42 সি #: গ্র্যান্ড মোট সময় (5 রান): ফাইল পড়ার মোট সহ: 26000 এমএস, 27168 এমএস

স্যামসং গ্যালাক্সি নোট 2, অ্যান্ড্রয়েড 4.1.1 (এআরএম)

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): ফাইল পঠন সহ মোট 6895 এমএস, 7275 এমএস

জামারিন সি #: গ্র্যান্ড মোট সময় (5 রান): 6466 এমএস, ফাইল পঠন মোট সহ: 6720 এমএস

ডট 42 সি #: গ্র্যান্ড মোট সময় (5 রান): মোট ফাইল পড়ার সাথে 11185 এমএস, 11843 এমএস

ইন্টেল এমুলেটর, অ্যান্ড্রয়েড 4.2 (x86)

জাভা: গ্র্যান্ড টোটাল টাইম (5 রান): ফাইল পঠন সহ মোট 2389 এমএস, 2770 এমএস

জ্যামারিন সি #: গ্র্যান্ড মোট সময় (5 রান): 1748 এমএস, ফাইল পঠন সহ মোট: 1933 এমএস

ডট 42 সি #: গ্র্যান্ড মোট সময় (5 রান): ফাইল পঠন সহ মোট 5150 এমএস, 5459 এমএস

আমার কাছে এটিও আকর্ষণীয় ছিল যে Xamarin C # একটি নতুন এআরএম ডিভাইসে জাভার চেয়ে কিছুটা দ্রুত এবং পুরানো নেক্সাস ওয়ানটির থেকে কিছুটা ধীর। যদি কেউ এই পরীক্ষাগুলি চালাতে চান তবে দয়া করে আমাকে জানান এবং আমি গিটহাবের উত্সগুলি আপডেট করব। এটি ইন্টেল প্রসেসরের সাহায্যে একটি প্রকৃত অ্যান্ড্রয়েড ডিভাইস থেকে ফলাফলগুলি দেখতে আকর্ষণীয় হবে।

আপডেট 7/26/2013

মাত্র একটি দ্রুত আপডেট, সর্বশেষ Xamarin.Android 4.8 এর সাথে বেঞ্চমার্ক অ্যাপ্লিকেশনগুলির সাথে পুনরায় সংকলিত, এবং আজ প্রকাশিত ডট 42 1.0.1.72 আপডেটের সাথে - এর আগে প্রকাশিত ফলাফলগুলি থেকে কোনও উল্লেখযোগ্য পরিবর্তন হয়নি।

7/30/2013 আপডেট করুন - ডট 42 এর জন্য আরও ভাল ফলাফল

আমার জাভা কোডটির রবার্টের (dot42 নির্মাতাদের থেকে) সি # তে ডট 42 পুনরায় পরীক্ষা করা। আমার সি # বন্দরে প্রাথমিকভাবে জামারিনের জন্য করা, আমি কিছু স্থানীয় জাভা ক্লাস যেমন প্রতিস্থাপনের তালিকা তালিকার সাথে সি # এর সাথে তালিকাভূক্ত করেছি, রবার্টের আমার ডট 42 সোর্স কোড নেই, তাই তিনি এটি আবার জাভা থেকে পোর্ট করেছেন এবং সেখানে জাভা ক্লাস ব্যবহার করেছেন এমন জায়গাগুলি, যা ডট 42-র উপকার করে, আমি অনুমান করি কারণ এটি ডালভিক ভিএম, জাভা-র মতো, এবং জামোরিনের মতো মনো-তে নয় runs এখন ডট 42 ফলাফল আরও ভাল। আমার পরীক্ষার একটি লগ এখানে:

7/30/2013 - ডট 42 সি # তে আরও জাভা ক্লাস সহ ডট 42 পরীক্ষা

ইন্টেল এমুলেটর, অ্যান্ড্রয়েড 4.2

ডট 42, স্ট্রিংবিল্ডার ব্যবহার করে গ্রেগের কোড। রিপ্লেস () যেমন জ্যামারিনে):
গ্র্যান্ড টোটাল টাইম (5 রান): 3646 এমএস, ফাইল পঠন সহ মোট: 3830 এমএস

স্ট্রিং.রোপ্লেস () জাভা এবং রবার্টের কোড হিসাবে) ব্যবহার করে গ্রেটসের কোড:
গ্র্যান্ড টোটাল টাইম (5 রান): 3027 এমএস, ফাইল পঠন সহ: 3206 এমএস

ডট 42, রবার্টের কোড:
গ্র্যান্ড মোট সময় (5 রান): 1781 এমএস, ফাইল পড়ার সাথে মোট: 1999 এমএস

জামারিন:
গ্র্যান্ড মোট সময় (5 রান): 1373 এমএস, ফাইল পঠন মোট সহ: 1505 এমএস

জাভা:
গ্র্যান্ড টোটাল টাইম (5 রান): 1844 এমএস, ফাইল পঠন মোট সহ: 2044 এমএস

এআরএম, স্যামসুং গ্যালাক্সি নোট 2, পাওয়ার সাশ্রয় বন্ধ, অ্যান্ড্রয়েড 4.1.1

ডট 42, স্ট্রিংবিল্ডার ব্যবহার করে গ্রেগের কোড ep রিপ্লেস () জ্যামারিনের মতো):
গ্র্যান্ড টোটাল টাইম (5 রান): 10875 এমএস, ফাইল পঠন সহ: 11280 এমএস

স্ট্রিং.রোপ্লেস () জাভা এবং রবার্টের কোড হিসাবে) ব্যবহার করে গ্রেটসের কোড:
গ্র্যান্ড টোটাল টাইম (৫ রান): ৯10১০ এমএস, ফাইল পড়ার সাথে মোট: ১০০৯7 এমএস

ডট 42, রবার্টের কোড:
গ্র্যান্ড মোট সময় (5 রান): 6279 এমএস, ফাইল পড়ার সাথে মোট: 6622 এমএস

জামারিন:
গ্র্যান্ড মোট সময় (5 রান): 6201 এমএস, ফাইল পঠন মোট সহ: 6476 এমএস

জাভা:
গ্র্যান্ড টোটাল সময় (5 রান): 7141 এমএস, ফাইল পঠন মোট সহ: 7479 এমএস

আমি এখনও মনে করি যে ডট 42 এর আরও অনেক দীর্ঘ পথ রয়েছে। জাভা-জাতীয় ক্লাস (যেমন অ্যারেলিস্ট) এবং তাদের সাথে একটি ভাল পারফরম্যান্স জাভা থেকে সি # তে পোর্টিং কোডটি আরও সহজ করে তুলবে। যাইহোক, এটি এমন কিছু যা আমি সম্ভবত খুব বেশি করতে চাই না। আমি বরং বিদ্যমান সি # কোড (লাইব্রেরি ইত্যাদি) ব্যবহার করতে চাই, যা স্থানীয় সি # ক্লাস (উদাহরণস্বরূপ তালিকা) ব্যবহার করবে এবং এটি বর্তমান ডট 42 কোডের সাথে ধীরে ধীরে সঞ্চালন করবে এবং জ্যামারিনের সাথে খুব ভাল করবে।

গ্রেগ


5
নেক্সাস 7 4.2.2 এ DEBUG মোড স্ট্রিং এবং জ্যামারিন আলফা 9 সম্পর্কে কয়েকটি অপ্টিমাইজেশন সহ: মোট সময়: 3907 এমএস, ফাইল রিডিং সহ মোট: 4016 "" 5 রান "মানে কী?
সফটলিয়ন

1
"এই প্রশ্নটি সম্ভবত বিতর্ক, যুক্তি, পোলিং বা বর্ধিত আলোচনা
চাইবে

2
@ লাইনকোকোস 2 ডি - আমি কেবলমাত্র কংক্রিটের ফলাফল এবং সংখ্যাগুলি, অর্থাৎ তথ্যগুলির প্রতিবেদন করছি। ভদ্রলোকরা বিষয়গুলির বিরোধ করবেন না :)
গ্রেগকো

2
ঠিক আছে, বিজ্ঞানীরা করেন;) পর্যবেক্ষণ করা আচরণ এবং সত্যের মধ্যে পার্থক্য রয়েছে। এটি সত্য হয়ে উঠতে আরও অনেক কিছু রয়েছে এবং তারপরেও অন্যান্য ব্যবহারকারী / পরিস্থিতিগুলির ক্ষেত্রে প্রয়োগযোগ্যতা প্রশ্নবিদ্ধ। এটি বেঞ্চমার্কের ক্রুস, তারা কেবলমাত্র পৃষ্ঠের উপর তথ্য উপস্থাপন করে - যতক্ষণ না আপনি খুঁজে পান যে বিক্রেতা x কোনও নির্দিষ্ট বেঞ্চমার্ক অ্যাপ্লিকেশনটির জন্য তার ড্রাইভারটিকে অনুকূলিত করেছে। সম্পর্কিত নোটে একবার প্রমাণিত হয়েছিল যে জলের স্মৃতিশক্তি রয়েছে (যেমন হোমিওপ্যাথি পরীক্ষা), যা পরীক্ষক পক্ষপাতিত্ব বিবেচনা ও বাতিল হওয়ার পরে তা অস্বীকার করা হয়েছিল, তবে এটি কোনও পরিসংখ্যানিক তাত্পর্য দেখাতে ব্যর্থ হয়েছিল।
শিখুন কোকোস

3
তদ্ব্যতীত, পরবর্তী +০.১ সংস্করণ দ্বিধাগ্রহণের সাথে এই পারফরম্যান্স বৈশিষ্ট্যগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হতে পারে - তখন এখানে উপস্থাপিত আপনার সমস্ত ভাল প্রচেষ্টা "ফ্যাক্ট" থেকে "মোট" এ পরিবর্তিত হয়। তবে যে কেউ এখানে আসেন সে এটিকে সত্য হিসাবে বুঝতে পারে এবং ভুল উপসংহার আঁকতে পারে। মাপদণ্ডের আর একটি ক্রুস: তারা ব্যবহৃত সফ্টওয়্যারটির সময় এবং সংস্করণগুলির একটি নির্দিষ্ট মুহুর্তের জন্য কেবল প্রতিনিধি। পরের দিন তারা আর বাস্তবতার প্রতিফলন নাও করতে পারে। আপনাকে ফলাফলগুলি পরীক্ষা করে দেখতে হবে। এ কারণেই এখানে ফলাফলগুলি বিষয়গত বিবেচনা করা যেতে পারে এবং এর কোনও অর্থ হয় না।
শিখুন কোকোস

উত্তর:


62

হ্যাঁ, জামারিনের মনো ভার্চুয়াল মেশিনটি অ্যান্ড্রয়েডে ব্যবহৃত গুগলের ডালভিকের চেয়ে বেশি চিত্তাকর্ষক। আমি এইচটিসি ফ্লায়ার এবং এসার আইকনিয়া ট্যাব ট্যাবলেটগুলির মাধ্যমে জাভা ডালভিকের বিপরীতে মনো এর মাধ্যমে অ্যান্ড্রয়েডের সি # বন্দরটি বেঞ্চমার্ক করার জন্য এটি পরীক্ষা করেছি, সি # অ্যান্ড্রয়েডের ভাল প্রয়োগের মাধ্যমে এবং জাভা ভিত্তিক ডালভিককে সত্যই ছিন্ন করতে।


4
@ পিটারলাউরে, দয়া করে আমার প্রশ্নের আপডেটটি দেখুন। আমি আমার আসল জীবনের জাভা কোডের কিছু অংশ সি # তে পোর্ট করে বেঞ্চমার্ক চালানোর উদ্দেশ্যে চাইছি, তবে তাদের এখানে পোস্ট করুন - যদি তারা আমার প্রশ্নটি আবার খোলেন, যেমন এসও ভিজিল্যান্টগুলি এটি তত্ক্ষণাত বন্ধ করে দিয়েছে।
গ্রেগকো

1
@ পিটারলওরে - আমি এখন আমার পরীক্ষা চালিয়েছি এবং স্ট্যাকওভারফ্লোতে ফলাফল পোস্ট করেছি, তবে প্রশ্নটির মধ্যেই এটি এখনও "লকড" রয়ে গেছে এবং উত্তর পোস্ট করতে পারে না। আপনি যদি পারতেন তবে দয়া করে প্রশ্নটি পুনরায় খুলতে আপনার ভোট যুক্ত করুন। ফলাফল আকর্ষণীয়, এআরএম জাভা হ্যান্ড-ডাউন জিতে, মনোতে ইনটেল - সি # কোডে আরও দ্রুত।
গ্রেগকো

9
@ গ্রেগকো এটি লক্ষণীয় যে আপনি দেখতে পাচ্ছেন যে সি # দ্রুত অনুকরণ করা হচ্ছে, তবে জাভা সত্যিকারের ফোনে আরও দ্রুত। আমার কাছে এটি একটি গুরুত্বপূর্ণ পার্থক্য। আমি এমুলেটরটির কর্মক্ষমতা সম্পর্কে চিন্তা করব না, আসলে আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি চান যে এমুলেটরটি আসল জিনিসের চেয়ে ধীর / দ্রুত হোক। আমি পুনরায় খুলতে ভোট দিয়েছি।
পিটার লরি

14
পারফরম্যান্সের জন্য পরীক্ষা হিসাবে নিয়মিত এক্সপ্রেশন ব্যবহার করার সময় সতর্কতা অবলম্বন করুন। আরই বাস্তবায়নে আলগোরিদিমিক পার্থক্য বিশাল পার্থক্য করতে পারে। আপনি উপরে যা পরীক্ষা করতে পারেন তা হ'ল ডালভিক বা মনো ভিএম নয়, আরই এর বাস্তবায়ন গুণমান। আরও ভাল পরীক্ষা হস্ত-লিখিত পার্সিং কোড হবে যা প্রতিটি ভাষার প্রতিমাসূচক শৈলীতে লিখিত অভিন্ন, স্পষ্ট আলগোরিদিম ব্যবহার করে।
ক্রিস্টোফার

4
আপনি এই পরীক্ষাগুলি বা পরীক্ষার ফলাফলগুলি কীভাবে কার্যকর করেছিলেন সে সম্পর্কে কোনও ব্যাখ্যা ছাড়াই এই উত্তরটি অর্থহীন। যেমনটি এখন: সম্পূর্ণ মতামত ভিত্তিক।
রল্ফ ツ


34

আমরা সম্প্রতি একটি অ্যাপ্লিকেশনের জন্য জামারিন ব্যবহার করে তদন্ত করেছি। আমরা ইতিমধ্যে আমাদের অ্যাপ্লিকেশনটির উইন্ডোজ আরটি সংস্করণের জন্য লিখেছি সি # কোডটি ব্যবহার করেছি। অ্যান্ড্রয়েড সংস্করণে কিছু নির্দিষ্ট বিবরণ আবার লিখতে হয়েছিল।

আমরা যা আবিষ্কার করেছি তা হল জামারিন সি # তে I / O জাভা থেকে প্রায় 2x ধীর। আমাদের অ্যাপটি ভারীভাবে I / O আবদ্ধ is আমরা এর কারণটি এখনও আবিষ্কার করতে পারি নি, তবে এই মুহুর্তে আমরা ধরে নিচ্ছি যে এটি মার্শালিংয়ের কারণে। যদিও আমরা বেশিরভাগ সময় মনো ভিএম এর ভিতরে থাকার চেষ্টা করি, আমরা জানি না যে মনোো আসলে কীভাবে ডিস্কটি অ্যাক্সেস করে।

এটি আরও জানিয়েছে যে আমাদের সি # কোড এসকিউএল.এনইটি ( https://github.com/praeclarum/sqlite-net ) ব্যবহার করে। SQLite.NET কোড ব্যবহার করে সনাক্তকারী ফেচগুলি অ্যান্ড্রয়েডের জাভা এসকিউএলাইট র‍্যাপার ব্যবহারের চেয়ে 2x ধীর। উত্স কোডটি দেখার পরে এটি সরাসরি সি .ডিলের সাথে আবদ্ধ বলে মনে হচ্ছে, সুতরাং কেন এটি এত ধীর হয় তা আমি জানি না। একটি সম্ভাবনা হ'ল নেটিভ থেকে জাভা পর্যন্ত মার্শালিং স্ট্রিংগুলি অ্যান্ড্রয়েডে নেটিভ সি এর চেয়ে বেশি # জ্যামারিনের চেয়ে দ্রুত হতে পারে।


1
এটি সম্ভবত "বাইন্ডিংস" এর কারণেও জেমেরিনকে সিস্টেমের সাথে ইন্টারঅ্যাক্ট করতে হবে। প্রতিটি সিস্টেমে ডিফল্টরূপে কল একটি জাভা ক্লাসে যায় তবে মনো ভিএম-তে সময় দেওয়া দরকার। বিপরীতে একই ঘটনা ঘটে। আমি আমার উত্তরে এটি আরও কিছুটা ব্যাখ্যা করেছি: stackoverflow.com/a/46973819/1052697
রল্ফ ツ

34

এটি আপনার সাথে ভাগ করে নিতে চাইলে আরও একটি আপডেট হওয়া ব্লগ পোস্ট । তিনি জামারিনকে আইটিও এবং অ্যান্ড্রয়েড উভয়ের নেটিভ কোড এবং কর্ডোভার সাথে তুলনা করেন।

সংক্ষেপে, জামারিন স্থানীয় কোডের চেয়ে মাঝে মাঝে আরও ভাল অভিনয় করে। তিনি অ্যাপের আকার, লোড টাইম, আজুর পরিষেবা এবং প্রাথমিক নম্বর গণনা থেকে একটি তালিকা লোড করেছেন tested

উপভোগ করুন!

সম্পাদনা: আমি মৃত লিঙ্কটি আপডেট করেছি এবং আমি লক্ষ্য করেছি যে একটি অংশ 2 আছে


11

নীচের দুটি ডিভাইসে নেটিভ, জামারিন এবং জ্যামারিনের মধ্যে অন্য পরীক্ষায় আমি কয়েকটি তথ্য পেয়েছি ms ফর্মস সমাধান (পরীক্ষাগুলিতে আইওএস পারফরম্যান্সও অন্তর্ভুক্ত রয়েছে):

স্যামসং গ্যালাক্সি এ 7 : অ্যান্ড্রয়েড ওএস সংস্করণ: 6.0 সেন্ট্রাল-প্রসেসিং ইউনিট: অক্টা-কোর 1.9 গিগাহার্টজ কর্টেক্স-এ 53 র‌্যাম: 3 জিবি ডিসপ্লে রেজোলিউশন: 1920 × 1080

আইফোন 6 এস : আইওএস সংস্করণ: 10.3.3 সেন্ট্রাল-প্রসেসিং ইউনিট: ডুয়াল-কোর 1.84 গিগাহার্টজ টুইটার র‌্যাম: 2 জিবি ডিসপ্লে রেজোলিউশন: 1334 × 750

তুলনা কয়েকটি সাধারণ বৈশিষ্ট্যগুলির উপর তৈরি করা হয়, যার প্রতিটি তার নিজস্ব প্রয়োগের সাথে:

- Basic Hello World
- REST API
- JSON Serialization/Deserialization
- Photo Loading
- SQL Database Insert and Get All

প্রতিটি পরীক্ষা বেশ কয়েকবার পুনরাবৃত্তি হয়, গ্রাফগুলি গড় ফলাফল দেখায়।


ওহে বিশ্ব

বেসিক হেলো ওয়ার্ল্ড পারফরম্যান্স তুলনা


রেস্ট এপিআই

আরপিসিপি এপিআইয়ের মাধ্যমে একটি অনুরোধ প্রেরণ করতে অ্যাপ্লিকেশনটির যে সময় লাগে তা পরিমাপের লক্ষ্যে পরীক্ষার সেট এবং ওপেন ওয়েদারম্যাপ এপিআই ব্যবহার করে পরবর্তী ডেটা প্রক্রিয়াকরণ ছাড়াই প্রতিক্রিয়া ফিরে পাওয়া।

রেস্ট এপিআই পারফরম্যান্স তুলনা


সমস্ত জ্যামারিন অ্যাপ্লিকেশনগুলিতে জেএসওএন বিষয়গুলিকে সিরিয়ালাইজ করতে এবং ডিজিটাইসাইজ করার জন্য নিউটনসফট জসন.ন. ফ্রেমওয়ার্ক ব্যবহার করে জেএসএন অপারেশন টেস্টগুলি করা হয়েছে। নেটিভ অ্যান্ড্রয়েড সিরিয়ালাইজেশন এবং deserialization দুটি জাভা লাইব্রেরি ব্যবহার করে পরীক্ষা করা হয়েছে: জ্যাকসন এবং GSON।

দুটি রান করা হয়, প্রথমটি স্ক্র্যাচ থেকে এবং দ্বিতীয়টি ক্যাশেড ইনফো এবং অপারেশন সহ

প্রথম রান :

জেএসএন সিরিয়ালাইজেশন প্রথম চালানো

জেএসএন ডিজাইরিয়েশন প্রথম চালানো

(নেটিভ আইওএস জেএসএন অপারেশনস এই পরীক্ষার বিটিডব্লিউটিকে হত্যা করছে, এবং জামারিন দ্বিতীয়টিতে এটিতে যোগ দেয়)

জেএসএন সিরিয়ালাইজেশন দ্বিতীয় রান

জেএসএন ডিজাইরিয়েশন দ্বিতীয় রান


ফটো অপারেশন

তিনটি পৃথক রেজোলিউশন সহ চিত্রগুলিতে প্রথম লোড করুন:

Resolution  858×569, Size  868Kb
Resolution  2575×1709, Size  8Mb
Resolution  4291×2848, Size  28.9Mb

চিত্র প্রথম লোড অ্যান্ড্রয়েড

চিত্র প্রথম লোড iOS

Xamarin সম্পর্কে কিছু অনিশ্চিত বলে মনে হয়েছিল this এই পরীক্ষার জন্য ফর্মগুলির ফলাফল, সুতরাং এটি গ্রাফের অন্তর্ভুক্ত নয়।


এসকিউএলাইট অপারেশনস

দুটি অপারেশন পরীক্ষিত:

BulkInsert: Loading rows of data into a database table.
GetAll: Retrieving all data from the database.

ডাটাবেসের সাথে 10,000 টি রেকর্ড রয়েছে। সমস্ত অপারেশনগুলি ডিভাইসে অভ্যন্তরীণভাবে প্রক্রিয়াজাত করা হয়েছিল।

এসকিউএলাইট অ্যান্ড্রয়েড পারফরম্যান্স

এসকিউএল আইওএসের পারফরম্যান্স


জ্যামারিন নেটিভ (জ্যামারিন.আইওএস / জ্যামারিন.এন্ড্রয়েড) দেশীয় কোডের পরিবর্তে নিজেকে ভাল বিকল্প হিসাবে দেখায়, যদিও জ্যামারিন.ফর্মগুলি অনেক ক্ষেত্রে ধীর বলে মনে হয়, তবে দ্রুততর অ্যাপ্লিকেশনগুলি দ্রুত বিকাশের জন্য এটি একটি ভাল সমাধান হতে পারে।

সম্পূর্ণ পরীক্ষাটি এই উত্স থেকে আসে:

https://www.altexsoft.com/blog/engineering/performance-comparison-xamarin-forms-xamarin-ios-xamarin-android-vs-android-and-ios-native-applications/

আমার উত্তর বাড়ানোর জন্য আমাকে ব্যাখ্যা দেওয়ার জন্য আপনাকে ধন্যবাদ, আশা করি এটি কিছুটা সহায়তা করবে :)


7

কর্মক্ষমতা

পারফরম্যান্স একটি অস্পষ্ট শব্দ, যদি আপনি পারফরম্যান্স দ্বারা যা বোঝেন তা আপনি সংজ্ঞায়িত না করেন, যদি এটি সরল গণনার পারফরম্যান্স জামারিন গণনার প্রকৃতির উপর নির্ভর করে জাভার চেয়ে দ্রুততর হতে পারে।

কোডটি কার্যকর করতে অ্যান্ড্রয়েড নাটিভালি বহুবিধ ফর্ম নিয়ে আসে:

  • রেন্ডারস্ক্রিপ্ট (সিপিইউ এবং জিপিইউ)
  • জাভা (এসডিকে)
  • সি ++ (এনডিকে)
  • ওপেনজিএল (জিপিইউ)

এটি একেবারেই সুস্পষ্ট যে কোড কার্যকর করার সময় আরও বেশি দেশীয় সমাধানটি দ্রুততর হবে। একটি রান-টাইম ভিত্তিক ভাষা কখনই এমন ভাষা হারাতে পারে না যা সরাসরি সিপিইউতে চলে।

তবে অন্যদিকে আপনি যদি বাস্তব জীবনের ব্যবহারের পারফরম্যান্সটি পরিমাপ করতে চান তবে জাভা দ্রুততর হতে চলেছে জামারিন prop

জামারিন এবং কেন এটি ধীর হতে পারে

জ্যামারিনকে সাধারণ পুরানো জাভা অ্যাপ্লিকেশনগুলির সাথে তুলনা করার সময়, জামারিনের জন্য পারফরম্যান্স খুব ভাল হতে পারে কারণ এটি ধীর হতে পারে।

একটি বাস্তব বিশ্বের উদাহরণে জামারিন অ্যাপ্লিকেশনগুলি জাভা অ্যাপ্লিকেশনগুলির তুলনায় খুব ধীর হওয়ার সম্ভাবনা রয়েছে কারণ অনেক অ্যান্ড্রয়েড / জাভা (সিস্টেম) কলগুলি তথাকথিত বাইন্ডিংগুলি ব্যবহার করে জামারিন রান-টাইমে এবং তার কাছ থেকে ডেলিগেশন করা প্রয়োজন।

কয়েকটি বিভিন্ন ধরণের বাইন্ডিং রয়েছে যা জানা গুরুত্বপূর্ণ:

  • জেএনআই (জাভা নেটিভ ইন্টারফেস): জাভা কোড (এসডিকে) এবং নেটিভ সি ++ কোড (এনডিকে) এর মধ্যে ইন্টারফেসের জন্য অনেক অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে ব্যবহৃত বাইন্ডিং।
  • এমসিডাব্লু (ম্যানেজড কলয়েবল র‍্যাপারস): জ্যামারিনে পরিচালিত সি # কোড থেকে জাভা কোডে (অ্যান্ড্রয়েড রান-টাইম) ইন্টারফেসের জন্য একটি বাঁধাই পাওয়া যায়।
  • এসিডাব্লু (অ্যান্ড্রয়েড কলযোগ্য রেপার্স): জাভা কোডে (অ্যান্ড্রয়েড রান-টাইম) পরিচালিত সি # কোড থেকে ইন্টারফেসের জন্য জামারিনে পাওয়া যায় এমন একটি বাঁধাই।

এমসিডাব্লু এবং এসিডব্লিউ সম্পর্কে আরও এখানে: https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_1_-_ বোঝাবোধ_এই_এক্সামারিন_মোবাইল_প্ল্যাটফর্ম /

বাইন্ডিংগুলি পারফরম্যান্সের ক্ষেত্রে খুব ব্যয়বহুল। জাভা থেকে একটি সি ++ পদ্ধতি চালু করা কল করার সময় একটি বিশাল ওভারহেড যুক্ত করে, সি ++ এর মধ্যে থেকে একটি সি ++ পদ্ধতি কল করা বহুগুণ দ্রুত হয়।

একজন জেএনআই কল গড় কত জাভা অপারেশন গণনা করতে পারফরম্যান্স পরীক্ষা করেছিলেন: জেএনআই কল করার পরিমাণগত ওভারহেড কী?

তবে কেবল জেএনআই কলই ব্যয়বহুল নয় এমসডাব্লু এবং এসিডাব্লু থেকে আসা কলগুলি। রিয়েল ওয়ার্ল্ড জামারিন অ্যাপ্লিকেশনগুলি বাইন্ডিংগুলি ব্যবহার করে অনেকগুলি কল করে এবং এই বাস্তব সংসারের কারণে একটি জ্যামারিন অ্যাপ্লিকেশন ব্যবহার করা (এবং সাধারণভাবে হবে) একটি সাধারণ পুরানো জাভা অ্যাপ্লিকেশনটির চেয়ে ধীর হতে পারে। তবে জ্যামারিন অ্যাপ্লিকেশনটি কীভাবে ডিজাইন করা হয়েছিল তার উপর নির্ভর করে এটি খুব সম্ভবত ব্যবহারকারী তারতম্যটি লক্ষ্য করবেন না।

টিএলডিআর / উপসংহার: জ্যামারিনকে সময় সাশ্রয়ী মূল্যের মতো বিভিন্ন ধরণের বাইন্ডিং ব্যবহার করা দরকার।

বাইন্ডিংগুলি ছাড়াও, বাস্তব-বিশ্বের পারফরম্যান্সের বিষয়ে কথা বলার সময় আরও অনেকগুলি বিষয় যুক্ত রয়েছে, উদাহরণস্বরূপ: বাইনারিটির আকার, মেমরিতে অ্যাপটি লোড করা, I / O ক্রিয়াকলাপ এবং আরও অনেক কিছু। এইগুলির কয়েকটি বিষয় অনুসন্ধান করে এমন একটি ব্লগ পোস্ট এখানে পাওয়া যাবে: https://magenic.com/thinking/mobile-de વિકાસment-platform-performance-part-2-native-cordova-classic-xamarin-xamarin-forms


2

এটি বেশ পুরানো পরীক্ষা তবে প্রাসঙ্গিক হতে পারে: https://github.com/EgorBo/Xamarin.Android-vs- জাভা

পাটিগণিত পরীক্ষা

এখানে চিত্র বর্ণনা লিখুন

সংগ্রহ, জেনেরিক্স, কাস্টম মান ধরণের

এখানে চিত্র বর্ণনা লিখুন

স্ট্রিং দিয়ে কাজ করা

এখানে চিত্র বর্ণনা লিখুন

ইউপিডি: গুগল পিক্সেল 2 সহ নতুন ডেটা (ধন্যবাদ ইউশা-আলেউব )

পিক্সেল 2 পরীক্ষা


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.