বৈজ্ঞানিক গণনার প্রসঙ্গে সি ++ 11 সরানো শব্দার্থবিজ্ঞানের প্রভাব কী?


10

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

vector<vector<int> > V;
for(int k = 0; k < 100000; ++k) {
    vector<int> x(1000);
    V.push_back(x);
}

বৈজ্ঞানিক গণনার প্রসঙ্গে সি ++ 11 সরানো শব্দার্থবিজ্ঞানের প্রভাব কী?

আমি এই প্রশ্নে আগ্রহী সাধারণ তবে আরও বিশেষভাবে আমি বুস্ট লাইব্রেরি ব্যবহার করে লিখিত সুনির্দিষ্ট এলিমেন্ট কোডগুলির জন্য শব্দার্থিক পদক্ষেপগুলিতে আগ্রহী। আমি বুস্ট সংস্করণ ১.4747.০ ব্যবহার করে নিজের কয়েকটি সি ++ 03 কোড পরীক্ষা করেছি (যেহেতু বুস্ট রিলিজ নোটগুলি মুভ শব্দার্থবিজ্ঞানের কথা 1.4.0 তে প্রবর্তিত হয়েছে) এবং বুস্ট সংস্করণ 1.53.0 ব্যবহার করেছি, তবে আমি খুব বেশি উন্নতি লক্ষ্য করিনি। আমি অনুমান করি যে boost::numeric::ublas::vector/ এর জন্য অনুলিপি-নির্মাণ না করা matrixএবং boost::functionযেহেতু সিস্টেম ম্যাট্রিকগুলি সমাধান করার ফলে কাজের চাপের বেশিরভাগ অংশ গঠন করা যায় না থেকে কোনও সঞ্চয়ই লক্ষণীয় নয়।

সম্পাদনা: বাস্তবে দেখে মনে হচ্ছে সরু শব্দার্থবিদ্যা কেবলমাত্র এর জন্য প্রয়োগ করা হয়েছে boost::function( সংস্করণ 1.52.0 প্রকাশের নোট দেখুন )। পদক্ষেপের শব্দার্থবিজ্ঞানের কোনও উল্লেখ নেই boost::numeric, আমি উত্সগুলি নিশ্চিত করে নিশ্চিত করেছিলাম এবং মনে হয় কোনও মূলসূত্র উল্লেখ নেই।


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

উত্তর:


10

আমি মনে করি অনুশীলনে প্রভাব সীমিত এবং সীমাবদ্ধ থাকবে।

এখনই এটি সীমাবদ্ধ হওয়ার কারণ হ'ল বড় সসীম উপাদান প্যাকেজগুলি পোর্টেবল কোডটি লিখতে যত্নবান এবং তাই তারা এখনও তাদের নিজস্ব কোডগুলিতে সি ++ 11 ভাষা নির্মাণ ব্যবহার করে না।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.