Acovea জিসিসি সি এবং সি ++ কম্পাইলার সঙ্গে প্রোগ্রাম কম্পাইল জন্য "শ্রেষ্ঠ" অপশন খোঁজার জন্য একটি জেনেটিক অ্যালগোরিদম প্রয়োগ করা.
ACOVEA (বিবর্তনীয় অ্যালগরিদম মাধ্যমে কম্পাইলার বিকল্প বিশ্লেষণ) GNU Compiler Collection (জিসিসি) সি এবং সি ++ কম্পাইলার সঙ্গে প্রোগ্রাম কম্পাইল জন্য "শ্রেষ্ঠ" অপশন খুঁজে পেতে একটি জেনেটিক অ্যালগোরিদম প্রয়োগ করা.
"বেস্ট", এই প্রেক্ষাপটে, একটি নির্দিষ্ট সোর্স কোড থেকে দ্রুততম এক্সিকিউটেবল প্রোগ্রাম উত্পাদন ঐ যে বিকল্প হিসাবে সংজ্ঞায়িত করা হয়. Acovea অন্যান্য প্রোগ্রামিং ভাষা এবং অ জিসিসি কম্পাইলার পরীক্ষা বাড়ানো হতে পারে যে একটি সি ++ কাঠামো হয়.
আমি প্রোফাইলিং উদ্দেশ্য একই একটি সর্বোচ্চ করণ সরঞ্জাম হিসাবে Acovea কল্পনা. পরম্পরাগত ফাংশন-স্তর প্রোফাইলিং একটি প্রোগ্রাম এর কর্মক্ষমতা সবচেয়ে প্রভাবশালী আলগোরিদিম চিহ্নিত; Acovea তারপর দ্রুততম কোড জেনারেট যে কম্পাইলার পতাকা এবং বিকল্প বের করতে যারা অ্যালগোরিদম প্রয়োগ করা হয়.
Acovea এছাড়াও হতাশাপূর্ণ পারস্পরিক ক্রিয়ার জন্য, এবং কম্পাইলার নির্ভরযোগ্যতা পরীক্ষার জন্য পতাকার সমন্বয় পরীক্ষার জন্য দরকারী.
আধুনিক সফটওয়্যার বুঝতে এবং প্রথাগত উপায়ে দ্বারা যাচাই করা কঠিন. কোড লাইনের লক্ষ লক্ষ অ্যাপ্লিকেশন সহজ বর্ণনা বা নরপশু-বাহিনী তদন্ত defying, জটিল পারস্পরিক ক্রিয়ার ধারণকারী উত্পাদন.
সফটওয়্যার জটিলতা দেওয়া একটি অবাস্তব প্রস্তাব - টেস্টিং গাইডসহ, নিয়ন্ত্রণবাদী পদ্ধতির কর্মের প্রতি সম্ভব সমন্বয় কল্পনা মানুষের পরীক্ষকগণ উপর নির্ভর করে. তা সত্ত্বেও, সেই জটিলতা সত্ত্বেও, আমরা আধুনিক, বড় মাপের সফটওয়্যার সম্পর্কে গুরুত্বপূর্ণ প্রশ্নের উত্তর প্রয়োজন.
গুরুত্বপূর্ণ প্রশ্ন কি ধরণের? GNU Compiler Collection বিবেচনা করুন. আমি কারণে বিভিন্ন কম্পাইলার দ্বারা উপলব্ধ করা অগণ্য অপশন নিবন্ধ যে বেঞ্চমার্ক কোড প্রজন্মের, সমস্যার সঙ্গে পরিপূর্ণ একটি টাস্ক লিখুন. আমার benchmarks কোন অর্থ আছে, আমি একটি নির্দিষ্ট অ্যাপ্লিকেশনের জন্য দ্রুততম কোড উৎপন্ন অপশন যা সমন্বয় জানা প্রয়োজন.
বিকল্প "বেস্ট" সেট খোঁজা জিসিসি ডকুমেন্টেশন পরিমাণ এবং জিসিসি ডেভেলপার সম্প্রদায়ের প্রচলিত জ্ঞান দেওয়া, একটি সহজ টাস্ক মত শোনাচ্ছে. আহ, এটা শুধুমাত্র এত সহজ হলে! জিসিসি ডকুমেন্টেশন, ব্যাপক, এছাড়াও ভাল যথাযথ নয় এমন হয়.
আমি ডকুমেন্টেশন এই শৈলী প্রশংসা; তাদের পণ্যের "মান" সম্পর্কে পরম বিবৃতি যারা অনেক বাণিজ্যিক বিক্রেতারা, অসদৃশ, জিসিসি এর documenters কোড প্রজন্মের পরিবর্তন কিভাবে বিভিন্ন অপশন অনিশ্চয়তা মানা. প্রকৃতপক্ষে, কোড প্রজন্মের কম্পাইল হচ্ছে অ্যাপ্লিকেশনের ধরন এবং লক্ষ্য প্ল্যাটফর্ম উপর সম্পূর্ণভাবে নির্ভরশীল. এক সোর্স কোড জন্য দ্রুত এক্সিকিউটেবল কোড উৎপন্ন করে একটি বিকল্প অন্য একটি প্রোগ্রাম কর্মক্ষমতা জন্য ক্ষতিকর হতে পারে.
আমি একটি নতুন নিবন্ধ প্রকাশ যখনই "প্রচলিত জ্ঞান" আমার ইনবক্সে এসে পৌঁছায়. ভদ্র থেকে অভদ্র করতে সনির্বন্ধ ক্ষণিকের, এই ই-মেইল দ্রুত কোড উৎপাদন জন্য পরস্পরবিরোধী পরামর্শ থাকে.
অধিকাংশ ক্ষেত্রে, এই ধরনের অকল্পনীয় গবেষকেরা প্রায়ই আরো বেশী না, তাদের বৈধতা কোনো আনুষ্ঠানিক প্রমাণ অভাব, এবং, প্রস্তাবিত "উন্নতি" অকার্যকর বা ক্ষতিকারক. সব এই জিসিসি অপশন প্রোগ্রাম কোড জেনারেট করার একসঙ্গে কীভাবে কাজ করে তা সঠিকভাবে জানে - এটা অন্তর্ভুক্ত --myself কোন এক যে ক্রমবর্ধমান স্পষ্ট হয়ে উঠেছে.
আমি অপ্টিমাইজেশান এর পবিত্র ঈপ্সিত বস্তু চাওয়া - কিন্তু অপ্টিমাইজেশান ঠিক কি? সমস্যা বোঝা একটি সমাধান খুঁজে বের করার প্রথম ধাপ.
অপ্টিমাইজেশান সোর্স কোড থেকে "বেস্ট" মেশিন কোড উত্পাদন করা হয়. "বেস্ট" বিভিন্ন অ্যাপ্লিকেশনের বিভিন্ন জিনিষ মানে; একটি বৈজ্ঞানিক আবেদন দ্রুত এবং সঠিক ফলাফল সাথে সংশ্লিষ্ট হয় যখন তথ্য একটি ডাটাবেস হাতা অংশ; একটি এমবেডেড সিস্টেমের জন্য প্রথম উদ্বেগ কোড আকার হতে পারে.
এবং এটা ছোট কোড দ্রুত, বা দ্রুত কোড সঠিক যে খুবই সম্ভব. অপ্টিমাইজেশান হার্ডওয়্যার এবং সফ্টওয়্যার কনফিগারেশন বৈচিত্র্য দেওয়া পর্যন্ত একটি সঠিক বিজ্ঞান হচ্ছে থেকে.
একটি অপ্টিমাইজেশান আলগোরিদিম একটি লুপ পরিবর্তিত, বা গ্লোবাল সাধারণ উপ-এক্সপ্রেশন বাছা একটি সম্পূর্ণ প্রোগ্রাম পরীক্ষা হিসাবে জটিল অপসারণ হিসাবে হিসাবে সহজ হতে পারে. অনেক অপ্টিমাইজেশন প্রোগ্রামার দক্ষতা জন্য অন্তর্নিহিত বিবরণ পরিবর্তনকারী যখন একই ফলাফল উৎপাদন, আরও কার্যকর ফর্ম মধ্যে লিখেছে কি পরিবর্তন করুন; যেমন বিশেষ নির্দেশাবলী হিসাবে অন্তর্নিহিত হার্ডওয়্যার নির্দিষ্ট বৈশিষ্ট্য, ব্যবহার করে অন্যান্য "অপ্টিমাইজেশন" উত্পাদন কোড.
স্মৃতি আর্কিটেকচার, পাইপলাইনের, অন এবং অফ চিপ ক্যাশে - সব একটি উচ্চ পর্যায়ের ভাষা ব্যবহার করে প্রোগ্রামারদের সুস্পষ্ট নয় যে উপায়ে কোড কর্মক্ষমতা প্রভাবিত. , আসলে, আরো ক্যাশে মিস কারণ বড় কোড, এইভাবে অধ: পতিত কর্মক্ষমতা তৈরি করতে পারবেন দ্রুত কোড উত্পাদন মনে হতে পারে যে একটি অপ্টিমাইজেশান.
এমনকি সেরা হাতে টিউন সি কোড ব্যাখ্যা এলাকায় উপস্থিত রয়েছে; সি বিবৃতি এবং মেশিন নির্দেশাবলী মধ্যে কোন পরম, এক-এক চিঠিপত্রের আছে. প্রায় সোর্স কোড কোনো ক্রম বিভিন্ন মধ্যে কম্পাইল করা যেতে পারে - কিন্তু বৈশিষ্ট্যগুলি সমতুল্য - মেশিন নির্দেশ বিভিন্ন মাপের এবং কর্মক্ষমতা বৈশিষ্ট্য সঙ্গে স্ট্রিম.
একটি দ্রুত প্রোগ্রাম তৈরী করতে পারে ফাংশন কোড নিজেই সঙ্গে একটি ফাংশন কল প্রতিস্থাপন, কিন্তু প্রোগ্রাম সম্ভবনা বহুগুণ বাড়িয়ে তুলবে: ফাংশন ইনলাইনিং এই ঘটনা একটি ধ্রুপদী উদাহরণ. বর্ধিত প্রোগ্রাম আকার, ঘুরে, এইভাবে কারণে ক্যাশে মিস করার জন্য একটি প্রোগ্রাম গতি কমে, উচ্চ গতির ক্যাশ মেমোরি ভিতরে ঝুলানো থেকে একটি অ্যালগরিদম প্রতিরোধ করা হতে পারে.
বেজি শব্দের আমার ব্যবহার লক্ষ্য করুন "হতে পারে" - ছোট ফাংশন ইনলাইনিং কখনও কখনও অন্যান্য অপটিমাইজেশন এলগরিদম আরও দ্রুত এবং ছোট কোড উৎপাদন, স্থানীয় অবস্থার জন্য কোড উন্নতি করার সুযোগ দেয়.
অপ্টিমাইজেশান সহজ বা সুস্পষ্ট নয়, এবং আলগোরিদিম সমন্বয় অপ্রত্যাশিত ফলাফল হতে পারে. যা প্রশ্ন আমাকে ফিরে বইয়ের নাম: কোনো অ্যাপ্লিকেশনের জন্য, সবচেয়ে কার্যকর অপ্টিমাইজেশান অপশন কি?
বর্তমান রিলিজের মধ্যে নতুন কী:
· অ মুক্ত লাইসেন্সের মধ্যে ছোটখাট পরিবর্তন.
· সাপোর্ট libcoyotl এবং libevocosm সর্বশেষ সংস্করণের জন্য যোগ করা হয়েছে.
সফটওয়্যার বিবরণ:
সংস্করণ: 1.0.1
তারিখ আপলোড: 3 Jun 15
লাইসেন্স: বিনামূল্যে
জনপ্রিয়তা: 176
পাওয়া মন্তব্যসমূহ না