मैं एक बहुत सीमित सिस्टम के लिए कुछ कोड लिख रहा हूं जहां मॉड ऑपरेटर बहुत धीमा है। मेरे कोड में एक मॉड्यूलो प्रति सेकेंड 180 बार इस्तेमाल किया जाना चाहिए और मुझे लगा कि जितना संभव हो सके इसे हटाने से मेरे कोड की गति में काफी वृद्धि होगी, क्योंकि अब मेरे मेनलोप का एक चक्र 1/60 में नहीं चलता है दूसरा यह चाहिए। मैं सोच रहा था कि गुणा और विभाजन के साथ संभवतः थोड़ा बदलावों का उपयोग करके मॉड्यूलो को फिर से कार्यान्वित करना संभव था। तो सी ++ में अब तक मेरा कोड है (यदि मैं असेंबली का उपयोग करके मॉड्यूलो कर सकता हूं तो यह बेहतर होगा)। विभाजन या गुणा का उपयोग किए बिना मैं मॉड्यूल को कैसे हटा सकता हूं?बिट बदलावों का उपयोग कर मॉड्यूलो को फिर से कार्यान्वित करें?
while(input > 0)
{
out = (out << 3) + (out << 1);
out += input % 10;
input = (input >> 8) + (input >> 1);
}
संपादित करें: असल में मैंने महसूस किया कि मैं इसे प्रति सेकंड रास्ता 180 से अधिक बार की ज़रूरत है। इनपुट के मूल्य के रूप में देखकर 40 अंकों तक बहुत बड़ी संख्या हो सकती है।
180 बार/सेकंड ... क्या हार्डवेयर पर? यह आधुनिक गैर-एम्बेडेड प्रोसेसर पर कुछ भी नहीं है। – Mysticial
एक 16 बिट प्रोसेसर पर। मुझे पता है कि यह कुछ भी नहीं है लेकिन दूसरे कोड के बहुत सारे 1/60 में खत्म होने की आवश्यकता है और मेनूलो के प्रत्येक चक्र के लिए मॉड्यूलो तीन बार होने की जरूरत है। मैं जितनी गति कर सकता हूं उतनी गति को निचोड़ना चाहता हूं। – PgrAm
क्या मॉड्यूलस किसी भी प्रकार की संपत्ति को संतुष्ट करता है? क्या आप कई बार एक ही मॉड्यूलस का उपयोग कर रहे हैं। यदि न तो मामला है, तो मुझे संदेह है कि आप हार्डवेयर विभाजन निर्देश से बेहतर कर सकते हैं। – Mysticial