AppleScript के माध्यम से InDesign XMLElements जोड़ते समय मैं प्रदर्शन में सुधार कैसे कर सकता हूं?

मेरे पास एक ऐप्पलस्क्रिप्ट प्रोग्राम है जो एक एडोब इनडिज़ीन दस्तावेज़ के भीतर एक्सएमएल टैग और तत्व बनाता है। डेटा टेबल में है, और प्रत्येक सेल टैगिंग 5 सेकंड लेता है। पूरी लिपि को पूरा करने में कई घंटे लगते हैं।

मैं आंतरिक लूप कोड पोस्ट कर सकता हूं, लेकिन मुझे यकीन नहीं है कि SO को सामान्य या विशिष्ट होना चाहिए या नहीं। मैं भीड़ को फैसला दूंगा।

[संपादित करें] कोड एक सूची बनाता है (इस लूप से पहले) जिसमें तालिका में प्रति पंक्ति एक आइटम होता है। तालिका में प्रत्येक कॉलम के लिए एक स्ट्रिंग वाली एक सूची भी है। प्रत्येक सेल के लिए, प्रोग्राम दो सूचियों की [पंक्ति]/[कॉलम] स्थितियों में आइटम को जोड़कर एक एक्सएमएल तत्व और एक एक्सएमएल टैग बनाता है। यह उस सेल में पाठ को नव निर्मित तत्व में भी जोड़ता है।

मैं ऐप्पलस्क्रिप्ट के लिए बिल्कुल नया हूं इसलिए इस कोड में से कुछ को एडोब के नमूने से क्रुद्ध रूप से संशोधित किया गया है। अगर कोड अत्याचारी है तो मुझे नाराज नहीं होगा।

यहां कोड है:

repeat with columnNumber from COL_START to COL_END

    select text of cell ((columnNumber as string) & ":" & (rowNumber as string)) of ThisTable

    tell activeDocument

        set thisXmlTag to make xml tag with properties {name:item rowNumber of symbolList & "_" & item columnNumber of my histLabelList}

        tell rootXmlElement

            set thisXmlElement to make xml element with properties {markup tag:thisXmlTag}

        end tell

        set contents of thisXmlElement to (selection as string)

    end tell

end repeat

संपादित करें: मैंने सही उत्तर को बेहतर ढंग से प्रतिबिंबित करने के लिए प्रश्न को दोहराया है।

0
ro fr bn

5 उत्तर

मैं आंतरिक लूप कोड पोस्ट कर सकता हूं, लेकिन मुझे यकीन नहीं है कि SO को सामान्य या विशिष्ट होना चाहिए या नहीं। मैं भीड़ को तय करने दूँगा।

आपके द्वारा उदाहरण के रूप में पोस्ट किया गया कोड उतना विशिष्ट हो सकता है जितना आप (या आपके मालिक) के साथ सहज है - अधिक से अधिक नहीं, अधिक विशिष्ट विवरणों के साथ आपकी सहायता करना आसान है।

0
जोड़ा

यदि आंतरिक लूप कोड उचित लंबाई है, तो मुझे कोई कारण नहीं दिख रहा है जिसे आप पोस्ट नहीं कर सकते हैं। मुझे लगता है कि स्टैक ओवरफ्लो का उद्देश्य सामान्य और विशिष्ट दोनों प्रश्नों को शामिल करना है।

0
जोड़ा

मैंने यह एक बाहर निकाला।

दस्तावेज़ में डेटा टेबल का एक गुच्छा है। कुल मिलाकर, लगभग 7,000 डेटा पॉइंट हैं जिन्हें निर्यात करने की आवश्यकता है। मैं 7,000 बच्चों के साथ एक मूल तत्व बना रहा था।

ऐसा मत करो। प्रत्येक बच्चे को मूल तत्व में जोड़ना धीमा और धीमा हो गया जब तक कि लगभग 5000 बच्चे ऐप्पलस्क्रिप्ट का समय समाप्त नहीं हुआ और कार्यक्रम निरस्त हो गया।

समाधान ~ 480 बच्चों को रूट से बनाकर मेरा कोड अधिक भंगुर बनाना था, जिसमें प्रत्येक बच्चे के बारे में 16 पोते थे। नोड्स की वही संख्या, लेकिन कोड अब पर्याप्त तेज़ी से चलता है। (दस्तावेज़ को संसाधित करने में अभी भी लगभग 40 मिनट लगते हैं, लेकिन यह अनंतता से असीम कम समय है।)

संयोग से, मूल 7,000 बच्चों की योजना बेवकूफ या आलसी नहीं है जैसा दिखता है। नया समाधान मुझे उन तालिकाओं में डेटा का उपयोग करके दो तालिकाओं को एक साथ जोड़ने के लिए मजबूर कर रहा है, जिन्हें मैं नियंत्रित नहीं करता हूं। यदि कार्यक्रम एक ऐसा स्थान नहीं है जहां कार्यक्रम नहीं होना चाहिए तो कार्यक्रम अब टूट जाएगा। (लेकिन यह काम करता है।)

0
जोड़ा

समस्या लगभग निश्चित रूप से चयन है। क्या वैसे भी आप एक ही समय में सभी पाठ निकाल सकते हैं फिर आंतरिक चरों पर फिर से चल सकते हैं?

0
जोड़ा

क्या आप इनडिज़ीन या इनडिज़ीन सर्वर का उपयोग कर रहे हैं? आपका दस्तावेज़ कितने पेज हैं (या आप हमारे दस्तावेज़/आईडी सेटअप के बारे में अन्य जानकारी क्या बता सकते हैं)?

मैं बहुत सारे इनडिज़ीन सर्वर विकास करता हूं। आप कुछ कारणों से धीमे-डाउन देख सकते हैं जो आवश्यक रूप से कोड से संबंधित नहीं हैं।

अभी, मैं लगभग 100 सेकंड में लगभग पूरी तरह से स्क्रिप्ट/एक्सएमएल से 100-300 पेज दस्तावेज उत्पन्न कर रहा हूं (आप कुछ बड़ा कर रहे हैं)।

0
जोड़ा