मैं एक बहु-आयामी वेक्टर (गणितीय वेक्टर) बना रहा हूं जहां मैं मूल गणितीय परिचालन +, -, /, *, = की अनुमति देता हूं। टेम्पलेट दो मानकों में आता है, एक प्रकार (int, float आदि) है जबकि दूसरा वेक्टर का आकार है। वर्तमान में मैं लूप के माध्यम से संचालन लागू कर रहा हूं। अब आकार को संकलित समय पर जाना जाता है, क्या संकलक लूप को अनलॉक करेगा? यदि नहीं, तो क्या इसे (या न्यूनतम) प्रदर्शन दंड के साथ अनलॉक करने का कोई तरीका है?क्या संकलक इस लूप को अनलॉक करेगा?
template <typename T, u32 size>
class Vector
{
public:
// Various functions for mathematical operations.
// The functions take in a Vector<T, size>.
// Example:
void add(const Vector<T, size>& vec)
{
for (u32 i = 0; i < size; ++i)
{
values[i] += vec[i];
}
}
private:
T values[size];
};
इससे पहले कि किसी को टिप्पणी Profile then optimize
कृपया ध्यान दें कि यह मेरी 3 डी ग्राफिक्स इंजन के लिए आधार है और यह तेजी से होना चाहिए। दूसरा, मैं खुद को शिक्षित करने के लिए जानना चाहता हूं।
नहीं snarky ध्वनि करने के लिए, लेकिन अगर आप अनुकूलन के साथ संकलन और विधानसभा डंप आप काफी पता कर सकते हैं :) – Skurmedel
यहां तक कि अगर यह होना चाहिए वास्तव में तेजी से, रूपरेखा एक अमूल्य उपकरण है। वास्तव में, यह आपका उत्सव मित्र है * विशेष रूप से * यदि वास्तव में तेज़ होना है, क्योंकि यह अनुमान लगाने से कहीं बेहतर काम करता है। (साथ ही, उत्तर संकलक, बड़े पैमाने पर इस्तेमाल किए गए झंडे और शायद और भी अधिक पर निर्भर हो सकता है।) – delnan
'यदि नहीं, तो क्या कोई (या न्यूनतम) प्रदर्शन दंड के साथ इसे अनलॉक करने का कोई तरीका है?' लूप को अनलॉक करने का पूरा बिंदु प्रदर्शन बढ़ाने के लिए है ... यदि आप प्रदर्शन लागत करते हैं तो आप ऐसा क्यों करेंगे? – Chad