簡體   English   中英

哪個更適合填充DataGridView lambda或linq?

[英]which one is better for filling DataGridView lambda or linq?

我用兩種方法填充2 dataGridView:
1)Lambda表達式:

  
 protected void FillLamdaMethod()
        {
            Stopwatch sw = Stopwatch.StartNew();
            using (eCommerceContext ctx = new eCommerceContext())
            {

                List<table_bilgisayar> listBilgisayar = new List<table_bilgisayar>();
               listBilgisayar = ctx.table_bilgisayar.ToList();
                dataGridViewLamda.DataSource = listBilgisayar;//qry.AsEnumerable();
            }
            sw.Stop();
          lblLamdaResult.Text = String.Format("Time used (float): {0} ms",sw.Elapsed.TotalMilliseconds)+Environment.NewLine;
            lblLamdaResult.Text+=String.Format("Time used (rounded): {0} ms", sw.ElapsedMilliseconds);


        }


2)Linq方法:

 protected void FillClassicMethod()
        {
            Stopwatch sw = Stopwatch.StartNew();
            using (eCommerceContext ctx = new eCommerceContext())
            {
                List<table_bilgisayar> listBilgisayar = new List<table_bilgisayar>();
                listBilgisayar =(from q in ctx.table_bilgisayar select q).ToList();
                dataGridViewClasicLinq.DataSource = listBilgisayar;//(from q in ctx.table_bilgisayar select q.model).ToList();
            }
            sw.Stop();

            lblClassicResult.Text = String.Format("Time used (float): {0} ms", sw.Elapsed.TotalMilliseconds)+Environment.NewLine;
            lblClassicResult.Text += String.Format("Time used (rounded): {0} ms", sw.ElapsedMilliseconds);
        }


我有兩個重要問題
1)此秒表方法正確或足夠,還是有更好的方法來計算性能?
2)這一次; 我知道lambda表達式比經典linq更快(從表中的x等)。但是測試結果令人驚訝:
1)Lambda方法:867毫秒
2)Linq方法:39 ms此結果正確嗎? 我希望那一定是相反的...

也單擊fillButton調用此方法。 性能結果突然改變。 我認為這太瘋狂了。 867毫秒第二次點擊結果56毫秒第三次點擊45毫秒....

我認為要獲得任何可靠的結果,您都必須稍微修改一下測試。

也許您可以啟動秒表,循環執行1000次調用fill方法,停止秒表,然后將結果除以1000即可得出平均值。

由於多種原因,結果可能會發生巨大變化(例如,其他進程和/或線程耗盡了CPU或正在運行的.NET Garbage Collection)。 多次執行測試並取平均值將有助於消除任何差異。

我很驚訝有任何區別,我認為這只是一種不同的語法。 也許您的Select (q=>q)放慢了速度。 嘗試

listBilgisayar = ctx.table_bilgisayar.ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM