ভাষা আচরণ / তাত্পর্য এবং উত্পন্ন কোডের পারফরম্যান্সের মতো সংকলক পার্শ্ব প্রতিক্রিয়া বোঝাতে আমি সংযোজনীয় "প্রযুক্তিগত" নিই।
এই লক্ষ্যে, উত্তরটি হ'ল: না (*)। (*) হ'ল "দয়া করে আপনার প্রসেসরের ম্যানুয়ালটি পরামর্শ করুন"। আপনি যদি কিছু এজ-কেস আরআইএসসি বা এফপিজিএ সিস্টেমের সাথে কাজ করছেন, আপনাকে কোন নির্দেশাবলী উত্পন্ন এবং কী কী খরচ হবে তা খতিয়ে দেখার প্রয়োজন হতে পারে। কিন্তু আপনি যদি প্রায় কাছাকাছি কোনো প্রচলিত আধুনিক স্থাপত্য ব্যবহার করছেন, তারপর মধ্যে খরচের কোন উল্লেখযোগ্য প্রসেসর স্তর পার্থক্য নেই lt
, eq
, ne
এবং gt
।
যদি আপনি একটি প্রান্ত ক্ষেত্রে ব্যবহার করছেন আপনাকে খুঁজে পারে যে !=
তিন কার্যকলাপ (প্রয়োজন cmp
, not
, beq
) দুই বনাম ( cmp
,blt xtr myo
)। আবার সেই ক্ষেত্রে আরটিএম।
বেশিরভাগ ক্ষেত্রে, কারণগুলি রক্ষণাত্মক / শক্ত হওয়া, বিশেষত যখন পয়েন্টার বা জটিল লুপের সাথে কাজ করা হয়। বিবেচনা
// highly contrived example
size_t count_chars(char c, const char* str, size_t len) {
size_t count = 0;
bool quoted = false;
const char* p = str;
while (p != str + len) {
if (*p == '"') {
quote = !quote;
++p;
}
if (*(p++) == c && !quoted)
++count;
}
return count;
}
একটি সংক্ষিপ্ততর উদাহরণ হ'ল যেখানে আপনি ব্যবহারকারীর কাছ থেকে ডেটা গ্রহণ করে ইনক্রিমেন্টগুলি করতে রিটার্ন মানগুলি ব্যবহার করছেন:
#include <iostream>
int main() {
size_t len = 5, step;
for (size_t i = 0; i != len; ) {
std::cout << "i = " << i << ", step? " << std::flush;
std::cin >> step;
i += step; // here for emphasis, it could go in the for(;;)
}
}
এটি চেষ্টা করুন এবং 1, 2, 10, 999 মানগুলিকে ইনপুট করুন।
আপনি এটি প্রতিরোধ করতে পারেন:
#include <iostream>
int main() {
size_t len = 5, step;
for (size_t i = 0; i != len; ) {
std::cout << "i = " << i << ", step? " << std::flush;
std::cin >> step;
if (step + i > len)
std::cout << "too much.\n";
else
i += step;
}
}
তবে আপনি সম্ভবত যা চেয়েছিলেন তা ছিল
#include <iostream>
int main() {
size_t len = 5, step;
for (size_t i = 0; i < len; ) {
std::cout << "i = " << i << ", step? " << std::flush;
std::cin >> step;
i += step;
}
}
একটি কনভেনশন পক্ষপাতেরও কিছু বিষয় রয়েছে <
, কারণ স্ট্যান্ডার্ড পাত্রে অর্ডার করা প্রায়শই নির্ভর করে operator<
, উদাহরণস্বরূপ বেশ কয়েকটি এসটিএল পাত্রে হ্যাশিং এই বলে সমতা নির্ধারণ করে
if (lhs < rhs) // T.operator <
lessthan
else if (rhs < lhs) // T.operator < again
greaterthan
else
equal
যদি lhs
এবং rhs
কোনও ব্যবহারকারী সংজ্ঞায়িত শ্রেণি হয় তবে এই কোডটি লিখছেন
if (lhs < rhs) // requires T.operator<
lessthan
else if (lhs > rhs) // requires T.operator>
greaterthan
else
equal
প্রয়োগকারী দুটি তুলনা ফাংশন প্রদান করতে হবে। তাই <
পরিণত হয়েছে অপারেটর অপারেটর।
i++
করেন তবেi+=2
এটি খুব দীর্ঘ সময়ের জন্য (বা সম্ভবত চিরকালের জন্য) চলবে। এখন, যেহেতু আপনি সাধারণত<
সেই ক্ষেত্রে ব্যবহার করেন যেখানে আপনি পুনরাবৃত্তিকে 1 এর বেশি করে বাড়িয়েছেন , আপনি<
সেই ক্ষেত্রে যেখানে আপনি এটি 1 দ্বারা বাড়িয়েছেন তার জন্যও ব্যবহার করতে পারেন (ধারাবাহিকতার জন্য)।