PDA

View Full Version : سرعت linq بیشتره یا linq + sp



ایمان اختیاری
پنج شنبه 10 تیر 1389, 10:49 صبح
سلام
دیروز خواستم یه مطلب رو چک کنم.
خواستم ببینم سرعت linq + stored procedure آیا از سرعت linq به تنهایی برای درج اطلاعات بیشتره یا نه ...
کد زیر رو نوشتم برای درج ده هزار رکورد .. :
DateTime tt1;
DateTime tt2;
int i = 0;
textBox3.Text = DateTime.Now.ToString();
tt1 = DateTime.Now;
for ( i = 0;i<100000;i++)
{
using (DataClasses1DataContext dbase = new DataClasses1DataContext())
{
test t1 = new test()
{
id = i,
name = i.ToString()
};
dbase.tests.InsertOnSubmit(t1);
dbase.SubmitChanges();
};

}



textBox4.Text = DateTime.Now.ToString();
tt2 = DateTime.Now;

textBox5.Text = (tt2 - tt1).ToString();
کد بالا فقط با linq اطلاعات رو درج می کنه


DateTime tt1;
DateTime tt2;
DataClasses1DataContext dbase = new DataClasses1DataContext();

textBox1.Text = DateTime.Now.ToString();
tt1 = DateTime.Now;
for (int i = 0; i < 100000; i++)
{
var query = dbase.test3(i, i.ToString());

}
tt2 = DateTime.Now;
textBox2.Text = DateTime.Now.ToString();
textBox6.Text = (tt2 - tt1).ToString();

کد بالا هم linq+stored procedure

اینم کد


stored procedure
ALTER procedure test3
@t1 int,
@t2 nvarchar(3)
as
begin
INSERT INTO test
([id]
,[name])
VALUES
(@t1
,@t2)
end



http://barnamenevis.org/forum/attachment.php?attachmentid=52107&stc=1&d=1277966833

http://barnamenevis.org/forum/attachment.php?attachmentid=52108&stc=1&d=1277966833

عکس یک مربوط به 10000 رکورده و عکس دوم مربوط به 100000 رکورده
حالا سوالی که برام پیش اومده اینه که چرا تفاوت بین این دوتا بین 5 ثانیه نهایته .. قاعدتا وقتی از stored procedure استفاده می شه باید سریعتر جواب بگیریم ؟
توضیح اینکه توی عکسا عددهای سمت چپ بدون sp و عددهای سمت راست با sp

majid325
شنبه 12 تیر 1389, 08:16 صبح
یه همچین تستهای باید شامل چند مورد دیگه هم باشن:
-نتایج حاصل در تکرار N ام.
-در مورد درج,ویرایش، حذف و جالبترین گزینه select.
...

ایمان اختیاری
شنبه 12 تیر 1389, 08:45 صبح
توی select که تست کردم بازم زیاد تفاوت نداشت .. سوال شده برام ....

mrheretic
پنج شنبه 07 مرداد 1389, 18:05 عصر
تست جالب دیگری که می تونی انجام بدی حلقه 10000 و 100000 تایی رو تو sp بنویس
بعد تست کن :)
یعنی 1 بار sp رو با linq صدا بزن و داخله sp حلقه رو انجام بده