2011-11-01 8 views
14

मुझे पर्ल द्वारा किए गए दृश्य-दृश्य-दृश्य अनुकूलन के बारे में अधिक जानने में दिलचस्पी है।पर्ल अनुकूलक के बारे में मैं और कहां और जान सकता हूं?

एक उदाहरण जहां अनुकूलक व्यवहार करता है reverse sort { $a <=> $b } @array; रूप sort { $b <=> $a } @array;

यह अच्छा ol 'perldocdoesn't have anything on this subject की तरह लग रहा है।


कुछ यहाँ सवाल:

  1. perldoc के अभाव में, इस तरह के अनुकूलन के बारे में जानने के लिए सरकारी संसाधन क्या है?

  2. क्या कोई कारण है कि perldoc इन अनुकूलन को दस्तावेज़ित नहीं करता है?

  3. अन्य सामान्यतः ज्ञात अनुकूलन क्या हैं?

+0

सुनिश्चित नहीं हैं, लेकिन जब से कंपाइलर ओपन सोर्स है, आप केवल कोड देख सकते हैं और अनुकूलन को पहले हाथ देख सकते हैं। – Polynomial

+9

कार्यान्वयन विवरण perldoc में नहीं हैं क्योंकि भाषा के अंतर्निहित व्यवहार में परिवर्तन नहीं होने पर भी वे बदल सकते हैं। ये विवरण अक्सर दिलचस्प होते हैं, लेकिन पर्ल दस्तावेज़ पहले से ही बहुत बड़े हैं। – mob

+1

मैं मानता हूं कि ऐसा कुछ अच्छा हो सकता है। जैसा कि भीड़ कहते हैं, समस्या यह है कि वे बदल सकते हैं। मुझे पता है कि एक और अच्छा अनुकूलन यह है कि एक स्केलर संदर्भ में 'नक्शा' एक रिटर्न सरणी उत्पन्न नहीं करता है (जिसे अनदेखा किया जाएगा)। इन चीजों को कम से कम सामान्य मुहावरों और सामान्य अनुकूलन के लिए, रास्ते में उन्हें इकट्ठा किए बिना, जानना अच्छा लगेगा। –

उत्तर

9

इस तरह बातें के लिए, आप डॉक्स (विशेष रूप से सी एपीआई के साथ काम कर उन) में बिट्स और टुकड़े मिल सकता है, लेकिन इसमें से अधिकांश सी स्रोत कोड अपने आप में है।

sort के लिए, मेरा मानना ​​है कि प्रासंगिक समारोह S_simplify_sort in op.c

अनुकूलक के मुख्य Perl_peep in the same file में है। कैसे पर्ल संचालित उन्हें पढ़, perl5004delta साथ शुरू करने से कुछ जानकारी हासिल कर सकते हैं बारे में अधिक जानने के लिए इच्छुक किसी को भी -

8

कुछ का यह में perldeltas प्रलेखित है। इनमें से कुछ कोड में उचित रूप से अच्छी तरह से टिप्पणी की गई है, और निश्चित रूप से RTFS सीखने का एक और तरीका है। स्रोतों को देखने के लिए स्थानों के लिए एक अच्छा स्रोत the section "Compiled Code" of perlguts है, जो पढ़ने के लायक एक और दस्तावेज़ है।

कुछ, लेकिन इसका कोई मतलब नहीं है, इसका अध्याय 18, "संकलन", Programming Perl का दस्तावेज है (हां, तीसरा संस्करण वास्तव में 10 वर्ष पुराना है और इसमें 5.6.0 और/या 5.6.1 शामिल हैं, लेकिन the 4th edition आखिर में काम करता है!)

हालांकि, इसमें से बहुत कुछ दस्तावेज सूची धागे को छोड़कर कहीं भी दस्तावेज नहीं किया गया है, जहां विकास के दौरान विकास पर चर्चा की जा रही थी। यदि आप पर्ल इंटर्नल्स के बारे में अधिक जानने में रुचि रखते हैं और शायद दस्तावेज़ीकरण में थोड़ा योगदान दे रहे हैं, तो मैं perl5-porters mailing list या #p5p IRC channel पर प्रश्नों को लाने का सुझाव दूंगा, क्योंकि वह जगह है जहां अधिकांश पार्ल-जनजातीय जनजातीय ज्ञान रहता है।

+0

बेशक, आप स्टैक ओवरफ्लो में वापस रोचक प्रश्नों के किसी भी उत्तर को भी खिला सकते हैं - या सीधे उन पर पोस्ट करना शुरू करने के लिए उत्तर वाले लोगों को रिश्वत दे सकते हैं :) – hobbs

+0

असल में मैं इस प्रश्न के लिए बक्षीस देने की सोच रहा था ताकि वे उत्तर उनके ज्ञान में डाल सकते हैं :) – Zaid

1

मुझे संदेह है कि बिना किसी तुलना के इनबिल्ट प्रकार का उपयोग उप {} सबसे तेज़ होगा।

इसलिए, यदि आप रिवर्स सॉर्टिंग को प्रोत्साहित करने के लिए कस्टम उप {} का उपयोग करते हैं, तो यह धीमा हो जाएगा।

मैंने यह भी सोचा कि मैंने पढ़ा है कि 'रिवर्स सॉर्ट' करने के लिए अब कोई लागत नहीं है - संकलक इसे आपके लिए बाहर करता है, या कम से कम एक कस्टम उप {} का उपयोग करने से परिणाम को उलट देता है।

पर "कुशल पर्ल छंटाई पर एक ताज़ा दृष्टि" यह बड़े लेख इन विचारों से सहमत लगता है:

http://www.sysarch.com/Perl/sort_paper.html

+0

यह बड़े प्रश्न का उत्तर नहीं देता है: मैं पर्ल अनुकूलक के बारे में और कहां और जान सकता हूं? यह बस आराम कर रहा है कि अनुकूलक 'रिवर्स सॉर्ट' के साथ क्या करता है और इसके बारे में एक लिंक प्रदान करता है। – Zaid

1

आप एक प्रति की पकड़ मिल सकता है, और एक के विवरण के साथ सामना कर सकते हैं वर्तमान पर्ल से थोड़ा पुराना (हालांकि इसमें से अधिकतर नहीं बदला है), Extending and Embedding Perl पुस्तक उपयोगी हो सकती है, इसमें आंतरिक, ऑप्ट्री और ऑप्टिमाइज़र के कुछ विवरण हैं।

अधिकतर, हालांकि, अन्य सुझावों के रूप में, स्रोत को देखते हुए, और उचित बी मॉड्यूल के साथ खेलना, सबसे अच्छा तरीका है।

0

B::Deparse मॉड्यूल कुछ दिलचस्प दे सकता है: (। किसी कारण से, reverse अनुकूलन यहाँ प्रदर्शित नहीं करता है)

$ perl -MO=Deparse -e 'reverse sort { $a <=> $b } @array' 
reverse +(sort {$a <=> $b} @array); 
-e syntax OK 

क्यों इस विषय पर ज्यादा प्रलेखन नहीं है

+0

यह एक प्रश्न है, उत्तर नहीं – Zaid

+0

क्षमा करें। मैंने बीएल ऑप्टिमाइज़र के बारे में कुछ सीखने के तरीके के रूप में 'बी :: डिपार्स' मॉड्यूल का उपयोग करने के बारे में संकेत देने की कोशिश की। – tuomassalo

+0

ठीक है अगर 'रिवर्स' ऑप्टिमाइज़ेशन यहां नहीं दिखाया गया है, तो मुझे यकीन नहीं है कि इस प्रश्न की जरूरतों के लिए 'बी: डिपार्स' कितनी उपयोगी है – Zaid

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

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