क्या बड़ी संख्या धीरे-धीरे चलती है?


18

यह वास्तव में एक कठिन प्रश्न की तरह लगता है, लेकिन मेरे पास एक पायथन फाइल है, जिसमें एक संख्या है जो एक हजार अंकों की लंबी है और यह फाइल बहुत धीमी गति से चल रही है, मुझे यकीन नहीं है कि अगर किसी तरह का प्रसंस्करण चल रहा है, तो मुझे यकीन नहीं होगा से अनजान हूँ।

मैं लाइन को दबाता हूं jऔर ~ 1 सेकंड का एक निश्चित ठहराव बहुत दर्दनाक है!

मेरे पास केवल पायथन फाइल पर यह है, हालांकि यह दूसरों पर नहीं होता है।

संख्या को हटाने के बाद फ़ाइल सामान्य रूप से फिर से काम करती है ...

यहाँ संख्या है:

number=("""7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450""")

यह वास्तव में एक संख्या नहीं है, इसकी एक स्ट्रिंग है।


2
यहां पुष्टि की गई; यदि फ़ाइल है तो ऐसा नहीं होता है .txt। कुछ वाक्यविन्यास regexp पैटर्न को भटकाते हुए भटकते हैं, मुझे लगता है।
रमनो

चूंकि यह सिंटैक्स हाइलाइटिंग से संबंधित है, इसलिए सरल समाधान synmaxcolकुछ सीमित संख्या (जैसे आपके टर्मिनल की चौड़ाई) पर सेट किया जाएगा।
स्लेड

जवाबों:


23

मैं इसे syntax/python.vimउन जहाजों के साथ पुन: पेश कर सकता हूं जो विम 7.4.663 के साथ हैं।

उपयोग करना :syntime, यह निम्नलिखित सिंटैक्स समूह / पैटर्न के कारण लगता है:

TOTAL      COUNT  MATCH   SLOWEST     AVERAGE   NAME               PATTERN
73.870736   20     0       3.940215    3.693537  pythonNumber       \%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>

आपको इस समस्या को इसके अनुरक्षक (उसका नाम और ईमेल पता स्क्रिप्ट के हेडर में है) को रिपोर्ट करना चाहिए।

संयोग से, मैं मूल रूप से इसे पुन: पेश नहीं कर सका, क्योंकि मैं यहां से एक वैकल्पिक वाक्यविन्यास स्क्रिप्ट का उपयोग करता हूं । उस पर स्विच करना (यदि यह आपकी आवश्यकताओं को पूरा करता है), एक व्यवहार्य वर्कअराउंड भी होगा।


संपादित करें: संभवत : आगे बढ़ने के कारण, यह नए एनएफए-आधारित रेगेक्स इंजन के पैथोलॉजिकल प्रदर्शन के कारण प्रतीत होता है। के साथ :set regexpengine=1, मैं उस भारी मंदी को नहीं देखता। तो उस सिंटैक्स मैच के लिए एक संभावित वर्कअराउंड / फिक्स पुराने इंजन पर स्विच हो जाएगा; यह \%#=1पैटर्न (cp। :help NFA) से जुड़कर किया जा सकता है ।


धन्यवाद @Ingo, मैंने पहले कभी कुछ भी रिपोर्ट नहीं किया है लेकिन मुझे ऐसा करने में खुशी हो रही है। मेरे पास सिंटैक्स फ़ाइल है /usr/share/vim/vim74/syntax, शीर्ष पर डेवलपर है Neil Schemenauer <nas@python.ca>। क्या मैं आपसे पूछ सकता हूँ; यही कारण है कि आपने मूल रूप से सिंटैक्स फ़ाइलों को बदल दिया है? धन्यवाद
baxx

हाँ य़ह सही हैं; नवीनतम संस्करण 2014 जुलाई 16 से है, इसलिए यह संभावना है कि यह अभी भी बनाए रखा जा रहा है, और आपको लेखक से जवाब मिलेगा। आप उसे इस, अपने प्रश्न की ओर इशारा कर सकते हैं, क्योंकि इसमें पहले से ही एक अच्छा प्रजनन योग्य उदाहरण है।
इंगो करकट

मुझे बस अपना वैकल्पिक पायथन सिंटैक्स कहीं न कहीं मिला; मैं केवल शायद ही कभी पायथन फ़ाइलों को संपादित कर रहा हूं, इसलिए मैंने अब तक इतना सोचा नहीं है।
इंगो करकट

धन्यवाद @Ingo, मैंने वाक्यविन्यास फ़ाइलों को बदल दिया है और यह अब इतना धीमा नहीं है। मुझे डर है कि रेगेक्स इंजन मेरी समझ से परे हैं, मैं देव को ईमेल करूंगा, लेकिन मैं किसी भी परीक्षण को करने में प्रसन्न हूं।
baxx
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.