অঙ্কন করতে বা আঁকতে না আঁকতে (কখনই কোনও চিত্ররেক্ট / কোর গ্রাফিক্স বনাম সাবভিউ / চিত্রগুলি ব্যবহার করা উচিত এবং কেন?)


142

এই প্রশ্নের উদ্দেশ্য স্পষ্ট করার জন্য: আমি উভয় সাবভিউ এবং ড্রআরেক্ট ব্যবহার করে জটিল মতামত তৈরি করতে জানি। আমি কখন এবং কেন একে অপরকে ব্যবহার করতে হবে তা সম্পূর্ণরূপে বোঝার চেষ্টা করছি।

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

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

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

এমনকি গ্রাফিক্স ডিজাইন করতে এবং তাদের জন্য কোর গ্রাফিক্স কোড জেনারেট করার দুর্দান্ত সরঞ্জাম রয়েছে

সুতরাং প্রথমে আমি বিশ্বাস করতে পারি "কোর গ্রাফিক্স উপস্থিত থাকার কারণ রয়েছে। এটি দ্রুত!"

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

সুতরাং আমি অনুমান করি, সবকিছুর মতো এটিও জটিল। হতে পারে আপনি নিজেকে এবং অন্যকে ড্রআরেক্ট ব্যবহারের জন্য কখন এবং কেন তা বুঝতে সাহায্য করতে পারেন?

আমি কোর গ্রাফিক্স ব্যবহার করার জন্য বেশ কয়েকটি সুস্পষ্ট পরিস্থিতি দেখতে পাচ্ছি:

  1. আপনার কাছে ডায়নামিক ডেটা রয়েছে (অ্যাপলের স্টক চার্ট উদাহরণ)
  2. আপনার একটি নমনীয় ইউআই উপাদান রয়েছে যা একটি সাধারণ পুনরায় আকারযুক্ত ইমেজ দিয়ে কার্যকর করা যায় না
  3. আপনি একটি গতিশীল গ্রাফিক তৈরি করছেন, যা একবার রেন্ডার একাধিক জায়গায় ব্যবহৃত হয়

আমি কোর গ্রাফিকগুলি এড়াতে পরিস্থিতিগুলি দেখছি:

  1. আপনার দেখার বৈশিষ্ট্যগুলি পৃথকভাবে অ্যানিমেটেড করা দরকার
  2. আপনার তুলনায় অপেক্ষাকৃত ছোট ভিউ হায়ারার্কি রয়েছে, তাই সিজি ব্যবহার করে যে কোনও অতিরিক্ত অনুভূত চেষ্টা করা লাভের পক্ষে নয়
  3. আপনি পুরো জিনিসটি আবার অঙ্কন না করেই ভিউটির কিছু অংশ আপডেট করতে চান
  4. প্যারেন্ট ভিউয়ের আকার পরিবর্তন হলে আপনার সাবভিউগুলির বিন্যাসটি আপডেট হওয়া দরকার

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

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

প্রশ্ন আপডেট

তথ্য প্রত্যেকের জন্য ধন্যবাদ। কিছু স্পষ্টকারী প্রশ্ন এখানে:

  1. যদি আপনি মূল গ্রাফিক্সের সাথে কিছু আঁকেন তবে আপনি ইউআইআইমেজভিউ এবং একটি প্রাক-রেন্ডার করা পিএনজি দিয়ে একই জিনিসটি সম্পাদন করতে পারেন তবে আপনার কি সর্বদা সেই পথে যাওয়া উচিত?
  2. একটি অনুরূপ প্রশ্ন: বিশেষত এর মতো বাডাস সরঞ্জামগুলি সহ , আপনি কখন গ্রাফিক্সের ইন্টারফেস উপাদানগুলি অঙ্কন বিবেচনা করবেন? (সম্ভবত যখন আপনার উপাদানটির প্রদর্শনটি পরিবর্তনশীল হয় eg যেমন 20 টি ভিন্ন বর্ণের বৈচিত্রযুক্ত একটি বোতাম other অন্য কোনও ক্ষেত্রে?)
  3. নীচে আমার উত্তরে আমার বোধগম্যতা দেওয়া হয়েছে, আপনার জটিল ইউআইভিউ রেন্ডারটির পরে নিজের ঘরে একটি স্ন্যাপশট বিটম্যাপ কার্যকরভাবে ক্যাপচার করে এবং আপনার জটিল ভিউ স্ক্রল করার সময় এবং লুকিয়ে রাখার পরে কোনও টেবিল সেলটির জন্য একই কর্মক্ষমতা অর্জন করা যেতে পারে? স্পষ্টতই কিছু টুকরা কাজ করতে হবে। আমি একটি আকর্ষণীয় চিন্তা ছিল।

উত্তর:


72

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

সাধারণ কর্মপ্রবাহটি সাবউভিউ সহ টেবিলভিউগুলি তৈরি করা উচিত। আপনার অ্যাপ্লিকেশনটি সমর্থন করবে সবচেয়ে পুরানো হার্ডওয়্যারের ফ্রেম রেট মাপতে উপকরণগুলি ব্যবহার করুন। যদি আপনি 60fps না পান তবে কোরগ্রাফিকগুলিতে নেমে যান। আপনি যখন কিছুক্ষণ এটি করেছেন, আপনি যখন ইউআইকিট সম্ভবত সময়ের অপচয় হবেন তখন আপনি বুঝতে পারবেন a

তাহলে, কোর গ্রাফিক্স কেন দ্রুত?

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

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

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

আপনি যখনই পারেন, ইউআইকিট ব্যবহার করুন। কাজ করে এমন সহজতম বাস্তবায়ন করুন। প্রোফাইলের। যখন একটি উত্সাহ আছে, অনুকূলিতকরণ।


53

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

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

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

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

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

সুতরাং আঁকার দ্রুততম উপায় হ'ল স্থিতিশীল বিষয়বস্তু পরিবর্তনের বিষয়বস্তু থেকে পৃথক করা (পৃথক ইউআইভিউ / ইউআইভিউ সাবক্লাস / ক্যালায়ার্স)। স্থিতিশীল সামগ্রীটি ইউআইআইজেজ হিসাবে লোড করুন এবং এটি একটি ইউআইআইমেজভিউ ব্যবহার করে আঁকুন এবং রানআর্টে গতিশীলভাবে উত্পন্ন সামগ্রীকে একটি ড্রয়ারে রাখুন। আপনার যদি এমন সামগ্রী থাকে যা বারবার আঁকতে থাকে তবে নিজেই পরিবর্তন হয় না (অর্থাত্ 3 টি আইকন যা কিছু স্থিতি নির্দেশ করার জন্য একই স্লটে প্রদর্শিত হয়) পাশাপাশি ইউআইআইমেজভিউ ব্যবহার করুন।

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

আপনার যদি এমন সামগ্রী থাকে যা রানটাইম সময়ে গতিশীলভাবে উত্পন্ন হয় তবে অ্যাপ্লিকেশনটির জীবদ্দশায় (যেমন ব্যবহারকারীর নাম সম্বলিত একটি লেবেল) একই সময়ের জন্য একই থাকে তবে এটি টেক্সট সহ কোয়ার্টজ একবার ব্যবহার করে পুরো জিনিসটি আঁকতে বুদ্ধিমান হতে পারে পটভূমির অংশ হিসাবে বোতামের সীমানা ইত্যাদি। তবে এটি সাধারণত এমন একটি অপ্টিমাইজেশনের প্রয়োজন হয় যা ইনস্ট্রুমেন্টস অ্যাপটি আপনাকে আলাদাভাবে না বলে tells


বিস্তারিত উত্তর দেওয়ার জন্য ধন্যবাদ। আশা করি আরও লোকেরাও এটিকে নীচে স্ক্রোল করে ভোট দেয়।
বব স্প্রিন

আশা করি আমি এই দুটি বার upvote করতে পারে। মহান লেখার জন্য ধন্যবাদ!
তিব্বতের সমুদ্র উপকূল

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

@ উত্তর সাক্ষী আমি আপনার উত্তরটি দিয়ে যাচ্ছিলাম এবং আপনি কোনও বিষয়টিকে "অস্বচ্ছ। চিত্রের পিছনে সমস্ত কিছুই মুছে ফেলা" হিসাবে চিহ্নিত করার কথা উল্লেখ করেছেন। আপনি কি দয়া করে এই অংশে কিছু আলোকপাত করতে পারেন?
রিখ

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

26

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

সাধারণ পদ্ধতির

এটি সম্পূর্ণ পরিষ্কার যে বেন স্যান্ডোফস্কি তার উত্তরে উল্লিখিত হিসাবে , "যখনই আপনি পারেন, ইউআইকিট ব্যবহার করুন works সবচেয়ে কার্যকর বাস্তবায়ন করুন যা কার্যকর হয় Profile প্রোফাইল। যখন কোন উদ্দীপনা থাকে, তখন অনুকূলিত হন" "

কেন

  1. একটি আই ডিভাইসে দুটি প্রধান সম্ভাব্য বাধা রয়েছে, সিপিইউ এবং জিপিইউ
  2. ভিপি প্রাথমিক অঙ্কন / উপস্থাপনের জন্য সিপিইউ দায়বদ্ধ
  3. জিপিইউ বেশিরভাগ অ্যানিমেশন (কোর অ্যানিমেশন), স্তর প্রভাব, সংমিশ্রণ ইত্যাদির জন্য দায়ী is
  4. ইউআইভিউ-র জটিল ভিউয়ের স্তরক্রমগুলি পরিচালনা করার জন্য তৈরি অনেকগুলি অনুকূলকরণ, ক্যাশিং ইত্যাদি রয়েছে
  5. ড্রয়ারকে ওভাররাইড করার সময় আপনি ইউআইভিউ'র প্রদত্ত প্রচুর সুবিধাগুলি হারাবেন এবং ইউআইভিউউকে রেন্ডারিং পরিচালনা করতে দেওয়ার চেয়ে সাধারণত ধীর হয়।

একটি ফ্ল্যাট ইউআইভিউতে সেল কন্টেন্টগুলি আঁকলে স্ক্রোলিং টেবিলগুলিতে আপনার এফপিএসের ব্যাপক উন্নতি করতে পারে।

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

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

কেন ড্রয়ারকেট (মূল গ্রাফিক্স ব্যবহার করে) সারণী স্ক্রোলিংয়ে সহায়তা করতে পারে:

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

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

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


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

6

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

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

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

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


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