[ नवीनतम अपडेट: बेंचमार्क प्रोग्राम और प्रारंभिक रिसेल उपलब्ध, नीचे देखें]
इसलिए मैं एक क्लासिक एप्लिकेशन के साथ गति / जटिलता ट्रेडऑफ का परीक्षण करना चाहता हूं: सॉर्टिंग।
एक ANSI C फ़ंक्शन लिखें जो बढ़ते हुए क्रम में फ्लोटिंग पॉइंट संख्याओं की एक सरणी को सॉर्ट करता है ।
आप किसी भी लाइब्रेरी, सिस्टम कॉल, मल्टीथ्रेडिंग या इनलाइन ASM का उपयोग नहीं कर सकते ।
प्रविष्टियाँ दो घटकों पर आंकी जाती हैं: कोड की लंबाई और प्रदर्शन। निम्नानुसार स्कोरिंग: प्रविष्टियाँ लंबाई के आधार पर हल की जाएंगी (व्हॉट्सएप पर बिना # लॉग इन के लॉग इन करें, ताकि आप कुछ फॉर्मेटिंग रख सकें) और प्रदर्शन द्वारा (एक बेंचमार्क पर # सेकंड्स का लॉग), और प्रत्येक अंतराल [सर्वोत्तम, सबसे खराब, रैखिक रूप से सामान्यीकृत] 0,1]। एक कार्यक्रम का कुल स्कोर दो सामान्यीकृत स्कोर का औसत होगा। सबसे कम स्कोर जीतता है। प्रति उपयोगकर्ता एक प्रविष्टि।
सॉर्टिंग (अंततः) को जगह में (यानी इनपुट सरणी को वापसी के समय में सॉर्ट किए गए मानों को शामिल करना होगा) करना होगा, और आपको निम्नलिखित हस्ताक्षर का उपयोग करना होगा, जिसमें नाम शामिल हैं:
void sort(float* v, int n) {
}
गिने जाने वाले वर्ण: sort
फ़ंक्शन में, हस्ताक्षर शामिल हैं, इसके अतिरिक्त बुलाए गए अतिरिक्त कार्य (लेकिन परीक्षण कोड शामिल नहीं हैं)।
कार्यक्रम को float
लंबाई के => 0, 2 ^ 20 तक के किसी भी संख्यात्मक मान को संभालना चाहिए ।
मैं प्लग sort
और इसकी निर्भरता को एक परीक्षण कार्यक्रम में बदलूंगा और जीसीसी (कोई फैंसी विकल्प नहीं) पर संकलन करूंगा । मैं इसमें सरणियों का एक गुच्छा खिलाऊंगा, परिणामों की शुद्धता और कुल रन समय की पुष्टि करेगा। उबंटू 13. के तहत इंटेल कोर i7 740QM (क्लार्क्सफील्ड) पर टेस्ट चलाए जाएंगे।
एरियर की लंबाई शॉर्ट ऐरे के उच्च घनत्व के साथ, पूरे अनुमत सीमा पर होगी। मूल्य एक वसा-पूंछ वितरण (दोनों सकारात्मक और नकारात्मक सीमाओं में) के साथ यादृच्छिक होंगे। डुप्लिकेट किए गए तत्वों को कुछ परीक्षणों में शामिल किया जाएगा।
परीक्षण कार्यक्रम यहां उपलब्ध है: https://gist.github.com/anonymous/82386fa028f6534af263
यह सबमिशन को आयात करता है user.c
। TEST_COUNT
वास्तविक बेंचमार्क में परीक्षण मामलों की संख्या ( ) 3000 होगी। कृपया प्रश्न टिप्पणियों में कोई प्रतिक्रिया दें।
समय सीमा: 3 सप्ताह (7 अप्रैल 2014, 16:00 जीएमटी)। मैं 2 सप्ताह में बेंचमार्क पोस्ट करूंगा।
प्रतिस्पर्धियों को अपना कोड देने से बचने के लिए समय सीमा के करीब पोस्ट करना उचित हो सकता है।
प्रारंभिक परिणाम, बेंचमार्क प्रकाशन के रूप में:
यहाँ कुछ परिणाम हैं। अंतिम कॉलम एक प्रतिशत के रूप में स्कोर दिखाता है, जॉनी केज को पहले स्थान पर रखना बेहतर है। एल्गोरिदम जो कि बाकी की तुलना में परिमाण धीमे के आदेश थे, परीक्षणों के एक सबसेट पर चलाए गए थे, और समय अतिरिक्त था। सी की खुद qsort
की तुलना के लिए शामिल है (जॉनी तेजी से!)। मैं समापन समय पर अंतिम तुलना करूँगा।