में शब्दकोश को लॉक करने या पुनः पकड़ने के लिए अधिक कुशल है। मेरे पास एक सामान्य शब्दकोश है जिसे मैं थ्रेडेड .NET प्रोजेक्ट (सी #) में कैश के रूप में उपयोग कर रहा हूं। मैं शब्दकोश पर बहुत सारे पढ़ूंगा (संभावित रूप से सैकड़ों या अधिक प्रति सेकंड चोटी पर)।क्या यह थ्रेड (.NET)
मेरे पास एक साधारण गेट (इंट आईडी) विधि है जो कैश में होने पर कस्टम ऑब्जेक्ट को वापस करनी चाहिए, या अन्यथा शून्य।
मेरा प्रश्न: क्या यह शब्दकोश को लॉक करने के लिए तेज़/अधिक कुशल है, या बस कोशिश/पकड़ ब्लॉक का उपयोग करें?
शब्दकोश का मानना है कि "dic" नामक चर में संग्रहीत किया जाता है।
ताला नमूना:
public CustomObject Get(int id)
{
lock(dic)
{
if (dic.ContainsKey(id))
return dic[id];
}
return null;
}
ट्राई/कैच नमूना:
public CustomObject Get(int id)
{
try
{
return dic[id];
}
catch
{
return null;
}
}
बेंचमार्किंग के लिए +1। –
इस परिदृश्य में प्रयास/पकड़ को मापने में कोई बात नहीं है क्योंकि यह थ्रेड सुरक्षित नहीं है। कृपया नीचे ब्रायन गिडियन प्रतिक्रिया देखें। – Dmitry
** सिस्टम लॉक नहीं हैं! ** यह सब विवाद के स्तर पर निर्भर करता है, कोर की संख्या, सीपीयू को अन्य ऐप्स आदि द्वारा कितना लोड किया जाता है ** ** 6k ** में 100k किया जाता है? ऐसा लगता है कि लॉक सेक्शन में सिंगल थ्रेडेड एक्सेस की तरह दिखता है, लगभग 60 एनएस क्या होगा, लगभग 50 एनएस अनचाहे लॉक() लेता है, बाकी शब्दकोष का उपयोग होता है। आपका बेंचमार्क अनचाहे लॉक() पर किया जाता है और उस स्थिति में, लॉक को मापने की कोई आवश्यकता नहीं है। – ipavlu