मुझे नहीं लगता कि समस्या इस नंबर को TStringGrid में जोड़ने से आई है।
100k पंक्तियों को जोड़ने से 1 सेकंड (700 मिमी) (उच्च अंत पीसी नहीं, केवल दोहरी कोर) लिया गया।
procedure TForm1.btn1Click(Sender: TObject);
Const
arr : array[1..5] of string = ('One','Two','Three','Four','Five');
Rows = 100000;
var
I: Integer;
F,E : Integer;
begin
StringGrid1.RowCount := Rows;
F := GetTickCount;
for I := 0 to Rows do
begin
StringGrid1.Cells[1,I] := Arr[1] + IntToStr(I);
StringGrid1.Cells[2,I] := Arr[2]+ IntToStr(I);
StringGrid1.Cells[3,I] := Arr[3]+ IntToStr(I);
StringGrid1.Cells[4,I] := Arr[4]+ IntToStr(I);
StringGrid1.Cells[5,I] := Arr[5]+ IntToStr(I);
end;
E := GetTickCount;
ShowMessage(Inttostr(E-F));
end;
मुझे लगता है कि आपके कोड में धीमापन, क्या आप डेटाबेस से डेटा लाते हैं? यदि ऐसा है तो यह आपके कोड की बाधा होगी, "खराब अभ्यास" नामक उपयोगकर्ताओं के लिए दिखाने के लिए WHETVER GRID को 50k जोड़ना भी शामिल है।
और यह कहना मुश्किल है कि यह कोई कोड दिखाए बिना धीमा क्यों है।
स्रोत
2011-01-05 07:35:05
यदि आपको पता नहीं है कि आपका कोड धीमा क्यों है, तो आपको कुछ कोड पोस्ट करना चाहिए। –
पहले, आपको 50k पंक्तियों को लोड करने के लिए "आवश्यकता" क्यों है, आप केवल स्क्रीन पर लगभग 25-50 प्रदर्शित कर सकते हैं? दूसरा आपने हमें यह नहीं बताया है कि आपकी प्रणाली (या आभासी मशीन) कितनी मेमोरी है और कितनी 50k पंक्तियां खाती हैं, अगर इसे सिस्टम मेमोरी से अधिक की आवश्यकता होती है तो "वर्चुअल मेमोरी" खेल में आ जाएगी और एचडीडी (या शायद , शायद आपका एसएसडी) जो रैम की तुलना में वा-हा-घास धीमा है। मेरी टिप्पणी को हमले के रूप में न लें, मैं समझने की कोशिश कर रहा हूं कि आपकी समस्या क्या है। – ComputerSaysNo
एक उचित पर्याप्त सवाल +1। मैं केवल 20-50 पंक्तियों को अस्वीकार कर सकता हूं, लेकिन मुझे कहीं भी डेटा की आवश्यकता है। माईब मैं इसे स्ट्रिंग ग्रिड की बजाय डीबी में डाल सकता हूं, या शायद मैं अपने प्रोग्राम में रखना चाहता हूं, और डीबी का उपयोग नहीं करना चाहता हूं। किसी भी मामले में, मेरे पास डेटा के दो सेट होंगे - स्ट्रिंग ग्रिड जहां मैं 50 पंक्तियां रखता हूं और कहीं भी जहां मैं बाकी (या सभी) रखता हूं, और वाउडल को सिंक करने के लिए कुछ मुश्किल कोड की आवश्यकता होती है। अच्छी तरह से एक बिंदु बनाया, जो दर्शाता है कि मैं इस सवाल क्यों पूछ रहा हूं। – Mawg