2009-07-15 8 views
13

मैं एक त्वरित बेंचमार्क प्रोग्राम लिखना चाहता हूं जिसे संकलित और विभिन्न मशीनों पर चलाया जा सकता है। व्यावसायिक रूप से/खुले स्रोतों के उपलब्ध विकल्पों का उपयोग करने के बजाय, मुझे थ्रेडिंग और एल्गोरिदम ऑप्टिमाइज़ेशन तकनीकों के साथ खेलने के लिए अपना खुद का होना चाहिए।सी में कुछ समय लेने वाले परिचालन क्या हैं?

मेरे पास एक जोड़ा है जिसका मैं पहले से उपयोग करता हूं, जिसमें फिबोनाची अनुक्रम की संख्या और बीजिंग/रैंड() कुछ हज़ार बार की गणना की जाती है।

क्या कोई अन्य एल्गोरिदम हैं जो तुलनात्मक रूप से सरल हैं, लेकिन साथ ही कम्प्यूटेशनल-गहन (और संभवतः गणित से संबंधित) हैं?

(ध्यान दें कि इन आपरेशनों सी भाषा में लागू किया जाएगा।)

+0

तो आप बेंचमार्क करना चाहते हैं? इंटीजर प्रदर्शन? तैरनेवाला स्थल? राम पहुंच गति? विभिन्न कैश के स्तर का आकार और गति? एकमात्र चीज जो मैं देख सकता हूं वह यह है कि आप I/O में रुचि नहीं रखते हैं (जो शायद अधिकांश लोगों के कार्यों के लिए हावी है)। – starblue

+0

उपर्युक्त सभी और सभी। :) –

उत्तर

8

Ackermann function आमतौर पर एक मजेदार है, लेकिन अगर आप इसे अपने जीवनकाल में समाप्त करना चाहते हैं यह बहुत बड़ी आदानों देना नहीं है ।

0

प्रमुख संख्याओं को ढूंढना काफी समय लेने वाला माना जाता है।

2

आप बड़े प्राइम्स को कैलक कर सकते हैं या पूर्णांक को कारक बना सकते हैं।

int c = 0; 
for (int n = 0; n < INT_MAX; n++) 
    for (int m = 0; m < INT_MAX; m++) 
     c++; 

std::cout << c; 
0

यह इसके अलावा के एक बहुत है। इन्हें एमपीआईआई (और अभी भी इस तरह से उपलब्ध हैं) का उपयोग कर सुपरकंप्यूटर के लिए फोर्ट्रान में NASA द्वारा लिखा गया था, लेकिन अब सी, जावा और ओपनएमपी कार्यान्वयन भी उपलब्ध हैं।

इनमें से अधिकतर बहुत कम्प्यूटेशनल गहन हैं, क्योंकि वे वैज्ञानिक कंप्यूटिंग में उपयोग किए गए संख्यात्मक एल्गोरिदम के प्रतिनिधि होने का इरादा रखते हैं।

+5

वास्तव में, यह नहीं है। कोई भी सभ्य कॉम्पेलर देखेगा कि आपने एन या एम के साथ बिल्कुल कुछ नहीं किया है, और इसलिए इसे सब कुछ अनुकूलित कर देगा। –

+1

और संख्याओं को जोड़ना उन चीजों में से एक है जो कंप्यूटर सबसे अच्छा करते हैं। मनमानी चौड़ाई फ्लोट गुणा अधिक गहन होगा! –

+0

@ केन व्हाइट - समायोजन किया है। –

3

फ़्रैक्टल्स

(विभिन्न प्रस्तावों पर) Some fractal source in C (without opengl)

+0

+1: मुझे यह पसंद है क्योंकि आप परिणामों का आनंद लेते हैं। या यदि आप एक एल्गोरिदम का उपयोग करते हैं जो स्वयं को बेहतर बनाता है तो आप इसे काम देख सकते हैं, जो कि और अधिक मजेदार है! – Welbog

+0

हां, ओपनजीएल के माध्यम से बस एक जीपीयू का उपयोग न करें जाहिर है यह बेंचमार्किंग उद्देश्य को हरा देगा। आप कई जटिल गणित के साथ भी मजा कर सकते हैं जो बेंचमार्किंग के लिए गणित एपीआई का दुरुपयोग करते हैं और एक सुंदर फ्रैक्टल –

3

मैं तुम्हें कहा था कि आप अपनी खुद की बनाना चाहते थे पता है, लेकिन शायद आप प्रेरणा के लिए मौजूदा मानक को आकर्षित कर सकता है। The Computer language benchmark game ने कई प्रोग्रामिंग भाषाओं को मानक के सेट के माध्यम से चलाया है। शायद आप अपने विचारों को देखकर कुछ विचार प्राप्त कर सकते हैं।

मेरे सिर के ऊपर से कुछ जल्दी विचार:

  • मैट्रिक्स गुणन: 2 बड़े मैट्रिक्स mulitplying, अपेक्षाकृत कंप्यूटेशनल रूप से संवेदनशील है, हालांकि आप खाते में कैशिंग करनी होगी

  • प्राइम संख्याएं उत्पन्न करना

  • इंटीजर कारककरण

  • सुलझाने ODEs के लिए संख्यात्मक तरीकों - उदाहरण के लिए Runge-kutta

+0

रेट्रैसिंग एक और अच्छा सीपीयू गहन कार्य है। – KitsuneYMG

0

चेकआउट भाषा शूटआउट से मानक: http://shootout.alioth.debian.org/

हालांकि: मानक केवल मानक हैं और जरूरी आप के बारे में बहुत नहीं बताया असली दुनिया और इसके विपरीत, भ्रामक हो सकता है।

1

हजारों या लाखों pi अंकों की गणना करने का प्रयास करें। उस कार्य के लिए बहुत सारे formulas हैं।

+0

क्यूईएमयू प्रसिद्धि के फैब्रिस बेलर्ड सबसे कुशल पीआई गणना फॉर्मूला का खोजकर्ता है ... bellard.org/pi बहु-प्रतिभाशाली! ... और उन्होंने कार्यान्वयन के साथ एक स्रोत obfuscation प्रतियोगिता जीता! –

+0

मैंने लिनक्स पत्रिका में फैब्रिस बेलर्ड के बारे में एक लेख पढ़ा है। होशियार लड़का! –

0

यदि आप समांतरता का प्रयास करना चाहते हैं, तो बहुत सारे मैट्रिक्स गणित करें। आपके मैट्रिक्स का आकार आप उपयोग कर सकते हैं स्मृति द्वारा सीमित किया जाएगा, लेकिन आप जितना चाहें उतने पुनरावृत्तियों को कर सकते हैं।

यह सिम निर्देशों पर जोर देगा जो आधुनिक CPUs के साथ आते हैं।

1

आपके पास project euler में कुछ वाकई अच्छे हैं, वे सभी गणित संबंधित हैं और आप उच्च मूल्यों का उपयोग करना चाहते हैं।

+0

वास्तव में, अनुचित एल्गोरिदम (जो पहेली को प्रेरित करने की कोशिश करता है) के साथ वास्तव में उचित रूप से अच्छी तरह से स्केल करते हैं। दुर्भाग्यवश, उन समस्याओं में से कई सामान्य हार्डवेयर इतनी तेजी से पर्याप्त है कि ब्रूट-फोर्स पर्याप्त तेज़ है, कभी-कभी एक विशाल मार्जिन से। – Javier

+0

मुझे पता है, लेकिन अगर वह कुछ कठिन समस्याओं का उपयोग करता है (और जो मूल्यों को शामिल करते हैं उन्हें अधिक समय लेने में मदद मिलती है) तो उन्हें बेंचमार्क ऐप में उपयोग करने के लायक एल्गोरिदम मिलेंगे –

0

आप एक बहुत बड़े इनपुट सेट के साथ एक शॉर्ट (टर्बो सॉर्ट) का प्रयास कर सकते हैं। मैं इसे एक आम ऑपरेशन समझता हूं।

0

NP-Complete के लिए हेरिस्टिक कुछ CPU गहन कोड प्राप्त करने का एक मजेदार तरीका है। आप Karps एनपी-पूर्ण समस्याओं में से एक के लिए "समाधान" कोड कोड कर सकते हैं।

संबंधित मुद्दे