অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি সংকলনের পরিবর্তে ব্যাখ্যা করা হয়। এটি কি রানটাইমে আইওএস অ্যাপ্লিকেশনগুলির চেয়ে ধীর করে তোলে?
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি সংকলনের পরিবর্তে ব্যাখ্যা করা হয়। এটি কি রানটাইমে আইওএস অ্যাপ্লিকেশনগুলির চেয়ে ধীর করে তোলে?
উত্তর:
জাভা অ্যান্ড্রয়েডে ব্যাখ্যা করা হয় না। Android অ্যাপ্লিকেশনগুলি বিকাশকারী বাইটোকোডে সংকলিত হয় are বাইটকোড হ'ল প্রোগ্রামটির একটি সংঘবদ্ধ প্রতিনিধিত্ব: প্রোগ্রামার দ্বারা লিখিত উত্স কোডের চেয়ে ছোট, তবে এখনও সিপিইউ দ্বারা সরাসরি সম্পাদনযোগ্য নয়। ডেড কোড অপসারণের মতো কিছু অপ্টিমাইজেশন এই পর্যায়ে করা যেতে পারে।
আপনি যখন কোনও ডিভাইসে অ্যাপ্লিকেশনটি লোড করেন, ডালভিক জেভিএম বাইটকোডকে দেশীয় এক্সিকিউটেবল কোডে সংকলন করে, ঠিক যেমন এটি চালাচ্ছে। এটি কেবলমাত্র সময়ে সংকলন। প্রোগ্রামটি সংকলিত হওয়ার অপেক্ষায় এটি একটি সংক্ষিপ্ত ধীর গতির কারণ হয়ে দাঁড়ায়, কিন্তু এর পরে কোনও কার্য সম্পাদনের ওভারহেড নেই, কারণ কোডটি দেশীয় সম্পাদনযোগ্য কোডে সংকলিত হয়েছে been
বিকাশকারীর কম্পিউটারে আপ-ফ্রন্ট সংকলনের পরিবর্তে এটি করার কিছু কার্যকারিতা রয়েছে advant অ্যাপটি তার হার্ডওয়্যার বৈশিষ্ট্যগুলি ব্যবহার করে এবং এর কার্যকারিতা বৈশিষ্ট্যগুলি ব্যবহার করে ফোনে নির্দিষ্ট সিপিইউয়ের জন্য সংকলন করা যেতে পারে। উদাহরণস্বরূপ, সিপিইউ সমর্থন করে তবে এটি হার্ডওয়্যার ফ্লোটিং-পয়েন্ট অপারেশনগুলি ব্যবহার করতে পারে। তদুপরি, একটি চতুর জেআইটি সংকলক (স্বীকারোক্তিযুক্ত, ডালভিক এই চতুরটি যথেষ্ট নয়) প্রোগ্রামটি যেভাবে চালিত হয় তা পর্যবেক্ষণ করতে পারে এবং প্রোগ্রামটি আসল ব্যবহারে যেভাবে ব্যবহৃত হয় তার ভিত্তিতে অপ্টিমাইজেশন সম্পাদন করতে পারে। এটি একবার আপনার ফোনে আপনার পরিবেশে কোন বিকল্পগুলি চালু এবং বন্ধ রয়েছে তা দেখা গেছে এটি আরও ভাল শাখার ইঙ্গিত সহ কোডটি পুনরায় সংকলন করতে পারে। একটি আপ-ফ্রন্ট সংকলক ব্যবহার করার জন্য এই তথ্য নেই।
ডালভিক ডালভিক ক্যাশে এবং অন্যান্য কৌশলগুলি ব্যবহার করে জেআইটি সংকলনের ত্রুটিগুলি প্রশমিত করতে। অ্যান্ড্রয়েড এল এবং এরপরে নতুন জেভিএম, এআরটি, পুরোপুরি একটি সামনের সময়ের সংকলক দিয়ে জেআইটি প্রতিস্থাপন করে । অ্যাপ্লিকেশনটি লোড না করে দেরি না করে JIT এর বেশিরভাগ সুবিধা পাওয়ার জন্য এটি অ্যাপ্লিকেশন ইনস্টল করা অবস্থায় বাইটকোডকে দেশীয় এক্সিকিউটেবল কোডে সংকলন করে।
ভুলে যাবেন না যে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে পুরোপুরি জাভা থাকে না। বিকাশকারীদের অ্যাপ্লিকেশনটির পারফরম্যান্স-সমালোচনামূলক অংশগুলির জন্য, বিশেষত গেমসের জন্য, সি বা সি ++ তে তাদের অ্যাপগুলির সমস্ত বা কিছু অংশ লিখতে এনডিকে রয়েছে K ওপেনজিএল এবং রেন্ডারস্ক্রিপ্টের মতো বিশেষ উদ্দেশ্যযুক্ত ইন্টারফেসগুলি প্রোগ্রামারদের কিছু ধরণের গণনার জন্য জিপিইউ এবং সিমডি কপ্রোসেসরের মতো বিশেষ হার্ডওয়্যারটির সুবিধা নিতে দেয়।
সুতরাং সত্যিই, আপনার প্রশ্নের কোনও সহজ উত্তর নেই। আপ-ফ্রন্ট সংকলনের পরিবর্তে জেআইটি ব্যবহার করা কিছু জিনিস দ্রুত, কিছু জিনিস ধীর করে তোলে। এটি ওএসের সামগ্রিক পারফরম্যান্সের মাত্র একটি অংশ।
যেহেতু এটি একটি বিস্তৃত প্রশ্ন, তাই এখানে একটি বিস্তৃত উত্তর।
"অ্যান্ড্রয়েড অ্যাপ্লিকেশন ব্যাখ্যা করার পরে আইওএস অ্যাপ্লিকেশনগুলি কি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির চেয়ে দ্রুত?"
প্রথমে আইওএস অ্যাপ্লিকেশনগুলি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির চেয়ে "দ্রুত" নয়।
দ্বিতীয়ত, সমস্যাটি সম্পর্কে "অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি ব্যাখ্যা করা হয়।" এটি "15 বছর আগে" এর মতো আপনি কম্পিউটিং সম্পর্কে বলতে চাইছেন: উপরের আলোচনা থেকে আপনি দেখতে পাচ্ছেন যে পরিস্থিতি আজ অনেক জটিল; সম্পূর্ণ নতুন প্রযুক্তিগুলি সামনে এসেছে। সংকলিত ধারণাটি ব্যাখ্যার চেয়ে দ্রুত! প্রাসঙ্গিক তুলনা ছিল, আপনি জানেন, 20 বছর আগে মেশিন কোডে পার্ল; বিষয়গুলি এতটা এগিয়ে গেছে যে আজ "আইওএস ভি অ্যান্ড্রয়েড" এ ইস্যুটি সত্যিই পরিষ্কারভাবে প্রয়োগ করা যাবে না।
তৃতীয়ত, মোবাইল প্রোগ্রামিংয়ে এমন অন্যান্য সমস্যা রয়েছে যা এ জাতীয় বিবেচনাগুলি পুরোপুরি স্যাম্প করে। মাটিতে কেবল একটি উদাহরণ, মোবাইল প্রোগ্রামাররা চিত্রগুলির বড় স্ক্রোলিং তালিকা, অলস লোডিং এবং এই জাতীয় সমস্যাগুলি পরিচালনা করার জন্য নিজেকে ছুঁড়ে ফেলে। কীভাবে দুটি ওএস এবং বিভিন্ন জনপ্রিয় গ্রন্থাগারগুলি এই সমালোচনামূলক সমস্যাগুলি পরিচালনা করে তা প্রায়শই অন্যান্য সমস্যাগুলিকে জলাঞ্জলি দেয়।
চতুর্থত, মোবাইলে আরও একটি মাত্রাতিরিক্ত সমস্যা হ'ল গ্রাফিক্স চিপসেট এবং সফটওয়্যার, ওপেনগিএল এবং এর সাথে এর বিভিন্ন জটিল সম্পর্কের বিষয়গুলি। উদাহরণস্বরূপ, অ্যাপল এই সমস্যার সাথে সম্পর্কযুক্ত তারা "ধাতু" বলে একটি সিস্টেম নিয়ে আসছে এবং অ্যান্ড্রয়েড এই ক্ষেত্রে তাদের নিজস্ব "জিনিস" নিয়ে আসছে out গ্রাফিক্স পাইপলাইন জুড়ে এই সমস্যাগুলি আপনার হাতে অ্যাপ্লিকেশনগুলি কীভাবে "অনুভব" করে তার জন্য অত্যন্ত গুরুত্বপূর্ণ।
আপনার প্রশ্নের খুব সংক্ষিপ্ত উত্তর হ'ল "সংকলিত ভি। ব্যাখ্যা করা" মূলত আপনি কি জানেন যে একটি অস্পষ্ট আলোচনার পয়েন্ট?
(এছাড়াও, আমি বিশেষত একটি আইফোনের তুলনায় একটি নোট 3 "ধীর" পাই না Also এছাড়াও, এর কয়েকটি শুদ্ধ নিদর্শন f অ্যান্ড্রয়েড ফোনগুলির অস্তিত্ব রয়েছে: সেখানে কম পারফরম্যান্স আইফোন তৈরি হয় না, তাই কিছু লোকের ভুল থাকতে পারে এ থেকে ধারণা।)
কারণ ব্যাখ্যামূলক অ্যাপ্লিকেশনগুলির অর্থ এই নয় যে সেগুলি সর্বদা ধীর হয়। সংকলিতটির তুলনায় কখনও কখনও এগুলি আরও শক্তিশালী এবং গতিশীল হয়। সংকলিত অ্যাপ্লিকেশনটিতে সমস্ত কোডগুলি একবার সংকলন করা হয়েছে এবং আউটপুটটি লাইব্রেরি বা এক্সিকিউটেবলের আকারে রাখা হয়, যখন ইন্টারপ্রেটেড ভাষায়, একবার এলোমেলোভাবে মৃত্যুদন্ডের ক্রম পরিবর্তন করতে পারে। সুতরাং আমি বলতে পারি, এটি বিকাশকারী এবং প্রোগ্রামিংয়ের উপায় বিকাশকারী নির্ভর করে।
তবে জাভা (অ্যান্ড্রয়েডের প্রোগ্রামিং ভাষা) ব্যাখ্যা করা হয়নি তবে জেআইটি সংকলিত। এর অর্থ হ'ল অ্যান্ড্রয়েড প্রোগ্রামগুলি চালনার ঠিক আগে সংকলন করে, আইওএসের উদ্দেশ্য সি'কে যথাযথভাবে অনুরূপ পারফরম্যান্স দেয়
সাম্প্রতিককালে, অ্যান্ড্রয়েডের এআরটি ফ্রেমওয়ার্কগুলি অ্যাপ্লিকেশনগুলিকে প্রাক-সংকলন করে, তাই এগুলি আইওএস অ্যাপসের মতো চালানো হয়। অন্য কথায়, অ্যান্ড্রয়েডের পরবর্তী সংস্করণটি সম্ভবত আইওএসের মতো দ্রুত হবে।
হালনাগাদ
প্রোগ্রামিং ভাষা সাধারণত দুটি বিভাগের একটির মধ্যে পড়ে: সংকলিত বা ব্যাখ্যা করা। একটি সংকলিত ভাষার সাথে, আপনি যে কোডটি প্রবেশ করেছেন তা এক্সিকিউটেবল ফাইল হিসাবে সংরক্ষণের আগে মেশিন-নির্দিষ্ট নির্দেশাবলীর একটি সেটে কমে যায়। বর্ণিত ভাষাগুলির সাথে, কোডটি আপনি যে বিন্যাসে প্রবেশ করেছিলেন সেটি একই আকারে সংরক্ষণ করা হবে। সংকলিত প্রোগ্রামগুলি সাধারণত ব্যাখ্যা করাগুলির তুলনায় দ্রুত সঞ্চালিত হয় কারণ রানটাইমগুলিতে ব্যাখ্যামূলক প্রোগ্রামগুলি মেশিনের নির্দেশনায় হ্রাস করতে হবে। যাইহোক, একটি ব্যাখ্যা করা ভাষার সাহায্যে আপনি এমন কিছু করতে পারেন যা সংকলিত ভাষায় করা যায় না। উদাহরণস্বরূপ, দোভাষী প্রোগ্রামগুলি রানটাইমে ফাংশন যোগ বা পরিবর্তন করে তাদের সংশোধন করতে পারে। ব্যাখ্যামূলক পরিবেশে অ্যাপ্লিকেশনগুলি বিকাশ করা সাধারণত সহজ কারণ আপনি যখনই একটি ছোট বিভাগ পরীক্ষা করতে চান প্রতিবার আপনার অ্যাপ্লিকেশনটি পুনরায় সংকলন করতে হবে না।