HeadlinesBriefing HeadlinesBriefing.com

ডবল হেডেড স্ট্যাক অ্যালোকেটর কর্মক্ষমতা অপ্টিমাইজেশন

Hacker News •
×

যখন ভিডিও গেমস মতো উচ্চ-কর্মক্ষমতার অ্যাপ্লিকেশন প্রোগ্রাম করা হয়, তখন ডেভেলপাররা দ্রুত কোড লিখতে এমন জাম্পস খুঁজে যা সীমিত সংস্থানগুলিকে সর্বোচ্চ করে তুলতে পারে। পরিবর্তীয় মেমোরি প্রয়োজন এমন কর্মক্ষমতা-গুরুত্বপূর্ণ কোডের জন্য মেমোরি আবেদন গুরুত্বপূর্ণ। একটি "বাম্প অ্যালোকেটর" বা স্ট্যাক অ্যালোকেটর এটি অপ্টিমাইজ করে যা আবেদনকে সহজ একটি পূর্ণাংক যোগ হিসাবে দেখে এবং ডিউনালেশনকে একটি আরও সস্ত পূর্ণাংক ব্যবস্থাপনা হিসাবে। প্রায় 2010 সালে, Surreal Software-এ কর্মরত অ্যানিমেশন প্রোগ্রামিং যখন রদ্য করা প্রকল্প "This is Vegas" ছিল, তখন এনিমেশন ব্লেন্ডিংয়ের জন্য ঘন ঘন অস্থায়ী আবেদনের সঙ্গে মুখোমুখি হয়। এই আবেদনগুলি কেবল প্রতি ফ্রেমে সংক্ষিপ্ত সময়ের জন্য অস্তিত্ব রাখে এবং নির্ভর করে কোন চরিত্রগুলি সক্রিয় ছিল তার ওপর, যা ক্যামেরা ফ্রাস্টাম দ্বারা নির্ধারিত হয়। প্রোফাইলিংয়ে অ্যালোকেটর একটি গরম স্পট হিসাবে দেখা দিয়েছিল। সমাধানটি একটি স্ট্যাক অ্যালোকেটর বাস্তবায় করা জড়িত ছিল যেখানে আবেদন কেবল একটি পূর্ণাংক যোগ এবং মেমোরি মুক্তি একক পূর্ণাংক ব্যবস্থাপনা। একটি নির্দিষ্ট ব্লক (যেমন, 1MB) আবেদন এবং "tos" (টপ অফ স্ট্যাক) ভেরিয়েবল বজায় রেখে, মেমোরি পরিচালনা প্রায় তাত্ক্ষণিক হয়ে উঠল। ফলাফল ছিল একটি উল্লেখযোগ্য কর্মক্ষমতা উন্নয়ন, যেখানে প্রোফাইলারগুলিতে আবেদনের সময় মাপা যায়। একটি গুরুত্বপূর্ণ সীমাবদ্ধতা হল যে এই অ্যালোকেটর স্বয়ংক্রিয়ভাবে ডেস্ট্রাক্টর কল করে না; যদিও placement new কনস্ট্রাক্টর হ্যান্ডল করতে পারে, তবে ডেস্ট্রাক্টর পরিচালনা ম্যানুয়ালি এবং ত্রুটি-প্রবণ। উপরান্তভাবে, যদি "tos" ভেরিয়েবল অ্যাটমিক যোগ করে, তবে মাল্টি-থ্রেডেড পরিবেশে স্ট্যাক অ্যালোকেটর উত্কৃষ্ট পারফর্ম করে, যা একাধিক থ্রেডকে একই পুল থেকে আবেদন করতে দেয়, যা CPU fork/join পরিস্থিতিতে বা GPU অ্যালগরিদমে উপকারী। আংশিক ডিউনালেশনও সম্ভব, রিকার্সিভ প্রক্রিয়াগুলির শুরুতে "tos" অবস্থা মনে রেখে এবং শেষে এটি রিসেট করে। এই কৌশলটি গেম ফ্রেমের সময় অস্থায়ী মেমোরি প্রয়োজনের জন্য উল্লেখযোগ্য গতি আরোহণ প্রদান করে।

উৎস: Hacker News · সারাংশ: HeadlinesBriefing