1) একটি ডিএলএল ফাংশন কল করা সর্বদা একটি অতিরিক্ত পরোক্ষ লাফ ব্যবহার করে এমনটি ভিত্তিতে তৈরি হয়। আজ, এটি সাধারণত নগণ্য। ডিএলএল এর ভিতরে আই 386 সিপিইউতে আরও কিছু ওভারহেড রয়েছে, কারণ তারা অবস্থানের স্বাধীন কোড তৈরি করতে পারে না। Amd64 এ, জাম্পগুলি প্রোগ্রামের কাউন্টারের সাথে তুলনামূলক হতে পারে, সুতরাং এটি একটি বিশাল উন্নতি।
2) এটি সঠিক। প্রোফাইলিং দ্বারা পরিচালিত অনুকূলিতকরণের সাহায্যে আপনি প্রায় 10-15 শতাংশ পারফরম্যান্স জিততে পারেন। এখন যে সিপিইউ গতি তার সীমাতে পৌঁছেছে এটি করা উপযুক্ত হবে।
আমি যোগ করব: (3) লিঙ্কার আরও ক্যাশে দক্ষ গ্রুপিংয়ে ফাংশনগুলি সজ্জিত করতে পারে, যাতে ব্যয়বহুল ক্যাশে স্তরের মিসগুলি হ্রাস করা যায়। এটি বিশেষত অ্যাপ্লিকেশনগুলির প্রারম্ভকালীন সময়েও প্রভাব ফেলতে পারে (আমি সান সি ++ কম্পাইলারের সাথে প্রাপ্ত ফলাফলের ভিত্তিতে)
এবং ভুলে যাবেন না যে ডিএলএলগুলির সাথে কোনও ডেড কোড নির্মূলকরণ সম্পাদন করা যাবে না। ভাষার উপর নির্ভর করে, ডিএলএল কোডটি সর্বোত্তম নাও হতে পারে। ভার্চুয়াল ফাংশনগুলি সর্বদা ভার্চুয়াল থাকে কারণ সংকলক জানেন না যে কোনও ক্লায়েন্ট এটি ওভাররাইট করছে কিনা।
এই কারণগুলির জন্য, যদি ডিএলএলগুলির প্রকৃত প্রয়োজন না হয় তবে কেবল স্থির সংকলন ব্যবহার করুন।
সম্পাদনা করুন (ব্যবহারকারীকে আন্ডারস্কোর দ্বারা মন্তব্যটির জবাব দিতে)
এখানে অবস্থান স্বাধীন কোড সমস্যাটি সম্পর্কে একটি ভাল সম্পদ http://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries/
বর্ণিত হিসাবে x86 এগুলি অন্য কোনও কিছুর জন্য আফাইক রাখে না তবে 15 বিট জাম্প রেঞ্জ এবং শর্তহীন জাম্প এবং কলগুলির জন্য নয়। এই কারণেই ফাংশনগুলি (জেনারেটরগুলি থেকে) বেশি থাকলে 32 কে সবসময়ই একটি সমস্যা হয়ে থাকে এবং এমবেডেড ট্রাম্পলাইনগুলির প্রয়োজন হয়।
তবে লিনাক্সের মতো জনপ্রিয় x86 ওএসে আপনার .SO / DLL ফাইলটি gcc
স্যুইচ দিয়ে উত্পন্ন না করা হলে -fpic
(যা পরোক্ষ জাম্প টেবিলগুলির ব্যবহার জোর করে) আপনার যত্নের প্রয়োজন নেই । কারণ আপনি যদি না করেন, কোডটি ঠিক ঠিক ঠিক ঠিক ঠিক করা থাকে যেমন কোনও লিংক এটিকে স্থানান্তরিত করে। তবে এটি করার সময় এটি কোড বিভাগটিকে ভাগ করে না নেওয়ার যোগ্য করে তোলে এবং ডিস্ক থেকে কোডটিকে মেমরির মধ্যে পূর্ণ ম্যাপিংয়ের প্রয়োজন হবে এবং এটি ব্যবহার করার আগে এটির সমস্ত স্পর্শ করা প্রয়োজন (বেশিরভাগ ক্যাশে খালি করা, টিএলবি হিট করা) ইত্যাদি ছিল time যখন এটি ধীর বলে বিবেচিত হত।
সুতরাং আপনার আর কোনও লাভ হবে না।
আমি প্রত্যাহার না ওএস (সোলারিস বা FreeBSD 'র) কারণ আমি শুধু এই না করছেন আমাকে সমস্যার আমার ইউনিক্স বিল্ড সিস্টেমের সাথে দিয়েছেন কেন এটি ক্র্যাশ পর্যন্ত আমি আবেদন -fPIC
করতে gcc
।