मेरे पास एक सुडोकू हल करने वाला एल्गोरिदम है जिसके लिए मेरा लक्ष्य जितना तेज़ हो सके। इस एल्गोरिदम का परीक्षण करने के लिए, मैं इसे कई बार चलाता हूं और औसत की गणना करता हूं। कुछ अजीब संख्या देख के बाद, मैं हर समय मुद्रित करने का फैसला किया है और इस परिणाम मिला:कई बार निष्पादित होने के बाद मेरा एल्गोरिदम तेजी से क्यों बनता है? (जावा)
Execution Time : 4.257746 ms (#1)
Execution Time : 7.610686 ms (#2)
Execution Time : 6.277609 ms (#3)
Execution Time : 7.595707 ms (#4)
Execution Time : 7.610131 ms (#5)
Execution Time : 5.011104 ms (#6)
Execution Time : 3.970937 ms (#7)
Execution Time : 3.923783 ms (#8)
Execution Time : 4.070238 ms (#9)
Execution Time : 4.765347 ms (#10)
Execution Time : 0.818264 ms (#11)
Execution Time : 0.620216 ms (#12)
Execution Time : 0.679021 ms (#13)
Execution Time : 0.643516 ms (#14)
Execution Time : 0.718408 ms (#15)
Execution Time : 0.744481 ms (#16)
Execution Time : 0.760569 ms (#17)
Execution Time : 0.80384 ms (#18)
Execution Time : 0.75946 ms (#19)
Execution Time : 0.802176 ms (#20)
Execution Time : 66.032508 ms : average = 3.3016254000000003
10 15 को फांसी (यह बेतरतीब ढंग से भिन्न होता है) के बाद, एल्गोरिथ्म के प्रदर्शन काफी है बेहतर बनाता है। यदि मैं इसे कई सौ बार चलाता हूं, तो यह अंततः लगभग 0.3ms पर स्थिर होगा। ध्यान दें कि मैं जेआईटी के लिए यह लूप करने के लिए इस लूप से पहले एक बार एल्गोरिदम चलाता हूं।
इसके अलावा, अगर मैं अपने लूप को चलाने से पहले 2 सेकंड के लिए थ्रेड सोता हूं, तो मेरे सारे समय 1ms (+/- 0.2) पर हैं।
इसके अलावा, अगर मैं एक सामान्य सुडोकू कुछ 500 बार मेरी पाश से पहले (1-9 तिरछे के साथ एक ग्रिड) हल, मेरी हर समय 0.3ms (+/- 0.02) के आसपास हैं।
प्रत्येक हल समान है। सभी मान रीसेट कर रहे हैं।
-क्यों प्रत्येक का समाधान समय लगातार हल के बाद सुधार करता है:
तो मेरे सवाल का कई गुना है?
- 10-15 हलकों के बाद मुझे हल समय में अचानक गिरावट क्यों आती है?
JIT पहली बार चलाने पर अनुकूलन करने के लिए नहीं है। वास्तव में, यह संभवतः नहीं होगा, क्योंकि कोड को अनुकूलित करने की लागत को उचित नहीं ठहराया जा सकता है जब तक कि यह कोड का एक महत्वपूर्ण टुकड़ा साबित न हो (अक्सर पर्याप्त रूप से चलाया जाता है)। –
आपने अनजाने में एक सुडोकू-सुलझाने वाले कृत्रिम जीवनform का निर्माण किया जो शायद स्काईनेट में विकसित होगा। अभी छोड़ें और नारियल बेचना शुरू करें। – Piovezan
अग्निशामक से गर्म समय-यात्रा टर्मिनेटर के लिए भुगतान करने के लिए छोटी कीमत। – arynaq