esmit61
جمعه 30 خرداد 1393, 22:31 عصر
سلام. من قطعه کد زیر رو با C# نوشتم. زمان اجراش روی کامپیوتر من حدود 80 ثانیه هست.
ولی وقتی معادل همین کد رو با دلفی اجرا میکنم حدود 10 ثانیه زمان میبره.(توی دلفی از AdoConnection استفاده میکنم)
احساس میکنم یه جای کارم اشکال داره. ممنون میشم راهنمایی کنید
البته من این سوال رو توی بخش سی شارپ هم پرسیدم.
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Test;Integrated Security=SSPI");
conn.Open();
Random rnd = new Random();
string squery="123";
SqlCommand sc = new SqlCommand(squery, conn);
Stopwatch sw = Stopwatch.StartNew();
string s = string.Empty;
progressBar1.Maximum = 10000;
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 5; j++)
{
byte ch = (byte)rnd.Next(65, 91);
s = s + ch.ToString();
}
squery = "Insert into t1 values('"+s+"')";
sc.CommandText = squery;
sc.ExecuteNonQuery();
++progressBar1.Value;
s = string.Empty;
}
sw.Stop();
long Duration= sw.ElapsedTicks;
MessageBox.Show(Duration.ToString());
این هم کد دلفی:
startTime:= GetTickCount;
ProgressBar1.Max:= 10000;
for i := 0 to 10000 do begin
s:='';
for j:=0 to 5 do begin
ch:= RandomRange(65,91);
s:=s+IntToStr(ch);
end;
ADOQuery1.SQL.Text:='Insert into t1 values('+QuotedStr(s)+')';
ADOQuery1.ExecSQL;
ProgressBar1.Position:= ProgressBar1.Position+1;
end;
endTime:= GetTickCount;
ShowMessage(IntToStr(endTime-startTime));
ولی وقتی معادل همین کد رو با دلفی اجرا میکنم حدود 10 ثانیه زمان میبره.(توی دلفی از AdoConnection استفاده میکنم)
احساس میکنم یه جای کارم اشکال داره. ممنون میشم راهنمایی کنید
البته من این سوال رو توی بخش سی شارپ هم پرسیدم.
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Test;Integrated Security=SSPI");
conn.Open();
Random rnd = new Random();
string squery="123";
SqlCommand sc = new SqlCommand(squery, conn);
Stopwatch sw = Stopwatch.StartNew();
string s = string.Empty;
progressBar1.Maximum = 10000;
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 5; j++)
{
byte ch = (byte)rnd.Next(65, 91);
s = s + ch.ToString();
}
squery = "Insert into t1 values('"+s+"')";
sc.CommandText = squery;
sc.ExecuteNonQuery();
++progressBar1.Value;
s = string.Empty;
}
sw.Stop();
long Duration= sw.ElapsedTicks;
MessageBox.Show(Duration.ToString());
این هم کد دلفی:
startTime:= GetTickCount;
ProgressBar1.Max:= 10000;
for i := 0 to 10000 do begin
s:='';
for j:=0 to 5 do begin
ch:= RandomRange(65,91);
s:=s+IntToStr(ch);
end;
ADOQuery1.SQL.Text:='Insert into t1 values('+QuotedStr(s)+')';
ADOQuery1.ExecSQL;
ProgressBar1.Position:= ProgressBar1.Position+1;
end;
endTime:= GetTickCount;
ShowMessage(IntToStr(endTime-startTime));