मैं बड़े स्ट्रिंग्स के भीतर लगातार कई स्ट्रिंग "कीवर्ड" की खोज करने के लिए सी # का उपयोग कर रहा हूं, जो> = 4kb हैं। यह कोड लगातार लूपिंग कर रहा है, और नींद उचित गति को बनाए रखने के दौरान पर्याप्त CPU उपयोग को कम नहीं कर रही है। बोग-डाउन कीवर्ड मिलान विधि है।सी #: अन्य तारों के अवसरों के लिए कुशलतापूर्वक एक बड़ी स्ट्रिंग को खोजें
मुझे कुछ संभावनाएं मिली हैं, और वे सभी समान दक्षता देते हैं।
1) http://tomasp.net/articles/ahocorasick.aspx - मेरे पास सबसे कुशल एल्गोरिदम होने के लिए पर्याप्त कीवर्ड नहीं हैं।
2) रेगेक्स। एक आवृत्ति स्तर का उपयोग, संकलित regex। - मुझे आवश्यकतानुसार अधिक कार्यक्षमता प्रदान करता है, और पर्याप्त दक्षता नहीं है।
3) स्ट्रिंग.इंडेक्सऑफ। -मुझे इसके लिए "स्मार्ट" संस्करण करने की आवश्यकता होगी क्योंकि यह पर्याप्त दक्षता प्रदान करता है। प्रत्येक कीवर्ड के माध्यम से लूपिंग और इंडेक्सऑफ को कॉल करना इसे काट नहीं देता है।
क्या कोई भी मेरे एल्गोरिदम या विधियों के बारे में जानता है जिनका उपयोग मैं अपने लक्ष्य को प्राप्त करने के लिए कर सकता हूं?
नीचे टिप्पणियों से जानकारी प्राप्त करना, स्ट्रिंग रूपांतरण से बचने और चीजों को [बाइट एरेज़] में रखना (http://stackoverflow.com/a/283648/512671) सबसे तेज़ हो सकता है; और बाइट एरे के लिए एक कस्टम बॉयर-मूर को कार्यान्वित करना अभी भी – zanlok