অ্যান্ড্রয়েড অ্যাপ্লিকেশন ব্যাখ্যা করার পরে আইওএস অ্যাপ্লিকেশনগুলি কি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির চেয়ে দ্রুত?


31

অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি সংকলনের পরিবর্তে ব্যাখ্যা করা হয়। এটি কি রানটাইমে আইওএস অ্যাপ্লিকেশনগুলির চেয়ে ধীর করে তোলে?


14
এটা না একটি ভাল প্রশ্ন কারণ Android অ্যাপ্লিকেশানগুলি নেই ব্যাখ্যা ঠিক যেমন, সঠিক উত্তর আসলে পয়েন্ট আউট।
অ্যারোনআউট

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

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

জেআইটি সংকলকরা মোটেই জেভিএমের ধারণার সাথে আবদ্ধ নয়। এমন জেভিএম রয়েছে যা জেআইটি সংকলক এমনকি বাণিজ্যিকগুলিও ব্যবহার করে না। আইবিএমের জেভিএমের কিছু প্রকারভেদ এওটি সংকলনকে ডিফল্ট করে ডিফল্টভাবে জেআইটি সক্ষম করে না। এছাড়াও, ছোট নোট, "আজকাল জাভাতে বড় অ্যাপ্লিকেশনগুলি" সম্ভবত দেড় দশক আগে (আইবিএম
১৯৯ before এর

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

উত্তর:


85

জাভা অ্যান্ড্রয়েডে ব্যাখ্যা করা হয় না। Android অ্যাপ্লিকেশনগুলি বিকাশকারী বাইটোকোডে সংকলিত হয় are বাইটকোড হ'ল প্রোগ্রামটির একটি সংঘবদ্ধ প্রতিনিধিত্ব: প্রোগ্রামার দ্বারা লিখিত উত্স কোডের চেয়ে ছোট, তবে এখনও সিপিইউ দ্বারা সরাসরি সম্পাদনযোগ্য নয়। ডেড কোড অপসারণের মতো কিছু অপ্টিমাইজেশন এই পর্যায়ে করা যেতে পারে।

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

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

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

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

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


1
দুর্দান্ত ব্যাখ্যার জন্য +1। আমি আসলে এর মতো উত্তরের অপেক্ষায় ছিলাম।
ম্যানি

5
ক্লান্ত পুরাতন "। নেট / জাভা বনাম সি ++ পারফরম্যান্স" থেকে পিসিতে খুব বিতর্ক, সত্যিই। এটি আপেল এবং কমলা।
অ্যারোনআউট

1
@ আরমনসফাই যথেষ্ট
ড্যান হাল্মে

2
@ এমটিল্ডড: এটি এক ধরণের সত্য, তবে এটি প্রায় সব কিছুকেই ক্যাশে করে, তাই আপনি যা ব্যবহার করছেন তা সম্ভবত প্রথমবারের মতো অ্যাপ্লিকেশন চালানোর সময় ঘটবে।
অ্যারোনআউট

1
এখানে মূল সমস্যা ডালভিক যদিও একটি "নরমাল" জেভিএম হিসাবে রয়েছে। হটস্পটের মতো স্ট্যাক ভিত্তিক স্ট্যান্ডের বিপরীতে (যেমন হটস্পট বনাম এআরএম প্রসেসরের স্বভাবের কারণেই [যেমন আইএ 32]] জাইগোটের ব্যবহার এবং ওডেক্স ফাইলগুলির ধারণা (যেমন সম্পূর্ণ ধারণা) [কমবেশি] ক্লাস ফাইল থেকে ক্লাস লোডারটিতে সরাসরি যাওয়া নয়), ডালভিককে একটি সাধারণ জেভিএম হিসাবে গণ্য করা কিছু ভুল ধারণা তৈরি করতে বাধ্য bound বিশেষত যেহেতু হটস্পট বাস্তবায়নের অনেকগুলি বিবরণ প্রায়শই ভুলভাবে সাধারণভাবে জেভিএমগুলির সাথে যুক্ত থাকে (যেমন এটি জেআইটি সংকলক যেমন)।
সিলালী অ্যাডোবার

2

যেহেতু এটি একটি বিস্তৃত প্রশ্ন, তাই এখানে একটি বিস্তৃত উত্তর।

"অ্যান্ড্রয়েড অ্যাপ্লিকেশন ব্যাখ্যা করার পরে আইওএস অ্যাপ্লিকেশনগুলি কি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির চেয়ে দ্রুত?"

প্রথমে আইওএস অ্যাপ্লিকেশনগুলি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির চেয়ে "দ্রুত" নয়।

দ্বিতীয়ত, সমস্যাটি সম্পর্কে "অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি ব্যাখ্যা করা হয়।" এটি "15 বছর আগে" এর মতো আপনি কম্পিউটিং সম্পর্কে বলতে চাইছেন: উপরের আলোচনা থেকে আপনি দেখতে পাচ্ছেন যে পরিস্থিতি আজ অনেক জটিল; সম্পূর্ণ নতুন প্রযুক্তিগুলি সামনে এসেছে। সংকলিত ধারণাটি ব্যাখ্যার চেয়ে দ্রুত! প্রাসঙ্গিক তুলনা ছিল, আপনি জানেন, 20 বছর আগে মেশিন কোডে পার্ল; বিষয়গুলি এতটা এগিয়ে গেছে যে আজ "আইওএস ভি অ্যান্ড্রয়েড" এ ইস্যুটি সত্যিই পরিষ্কারভাবে প্রয়োগ করা যাবে না।

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

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

আপনার প্রশ্নের খুব সংক্ষিপ্ত উত্তর হ'ল "সংকলিত ভি। ব্যাখ্যা করা" মূলত আপনি কি জানেন যে একটি অস্পষ্ট আলোচনার পয়েন্ট?

(এছাড়াও, আমি বিশেষত একটি আইফোনের তুলনায় একটি নোট 3 "ধীর" পাই না Also এছাড়াও, এর কয়েকটি শুদ্ধ নিদর্শন f অ্যান্ড্রয়েড ফোনগুলির অস্তিত্ব রয়েছে: সেখানে কম পারফরম্যান্স আইফোন তৈরি হয় না, তাই কিছু লোকের ভুল থাকতে পারে এ থেকে ধারণা।)


-3

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

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

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

হালনাগাদ

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


1
আপনি কী বোঝাতে চেয়েছেন "একবার এলোমেলোভাবে মৃত্যুদন্ডের ক্রম পরিবর্তন করতে পারে? এবং কীভাবে তারা আরও শক্তিশালী এবং গতিশীল? আমি এও বলছি না যে তারা ধীর, কেবল তারা ধীরে ধীরে, এমনকি সামান্য।
আরমন সাফাই

3
এটি সম্পূর্ণ সত্য নয়। এটি বিভ্রান্তিমূলকভাবে বলা যায় যে পুনরায় কম্পাইল না করা একটি সুবিধা, যেহেতু আপনাকে এখনও একটি এপিএইচ ফাইল তৈরি করতে হবে এবং এটি পরীক্ষার ডিভাইসে স্থাপন করতে হবে। গুগল জাভা ব্যবহার করার সিদ্ধান্ত নেয় নি: গুগল এটি কেনার আগেই অ্যান্ড্রয়েড ইতিমধ্যে জাভা ভিত্তিক ছিল। APK ফাইলগুলিতে "[প্রোগ্রামার] enteredোকানো একই ফর্ম্যাটে" কোডটি ধারণ করে না।
ড্যান হাল্মে

1
মাইক্রোসফ্ট .NET IL কোডে সংকলিত হয় যা জাভা যেমন বাইটকোডে সংকলিত হয় তেমনই ব্যাখ্যাও করা হয়।
এসবেন স্কোভ পেডারসেন

12
এই উত্তরের অনেক তথ্য সত্যই প্রাসঙ্গিক বা প্রযুক্তিগতভাবে সঠিক নয়। আমি এই উত্তরটি প্রযুক্তিগত নির্ভুলতার জন্য পুরোপুরি সংশোধন করার পরামর্শ দিচ্ছি।
আজা

2
আপনি যদি কোনও অস্বাভাবিক জেভিএম বাস্তবায়ন না করে থাকেন তবে জাভা সাধারণত কোনও ব্যাখ্যা করা ভাষা হয় না । জেআইটি সংকলন দোভাষী হিসাবে একই জিনিস নয়, সুতরাং এই উত্তরটির বেশিরভাগই অ্যান্ড্রয়েডের পারফরম্যান্সের প্রসঙ্গে সত্যই বেশ অপ্রাসঙ্গিক কারণ এটি জেআইটি ব্যবহার করে।
সর্বাধিক th
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.