- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为了我自己的启发,我决定测试 DataTable.ImportRow 与 DataTable.Merge 的比较速度。我发现 DataTable.ImportRow 比 DataTable.Merge 慢很多。在极少数情况下,这两个函数的处理时间相同。在极少数情况下,ImportRow 比 Merge 更快。
下面是我的测试结果和代码。
DataTable dt = new DataTable();
dt.Columns.Add("customerId", typeof(int));
dt.Columns.Add("username", typeof(string));
for (int i = 0; i <= 100000; i++)
{
DataRow myNewRow;
myNewRow = dt.NewRow();
myNewRow["customerId"] = 1;
myNewRow["username"] = "johndoe";
dt.Rows.Add(myNewRow);
}
// First Duration
DateTime startTime1 = DateTime.Now;
DataTable dt2 = new DataTable();
dt2 = dt.Clone();
for (int i = 0; i < dt.Rows.Count; i++)
dt2.ImportRow(dt.Rows[i]);
DateTime stopTime1 = DateTime.Now;
// End First Duration
TimeSpan duration1 = stopTime1 - startTime1;
// Second Duration
DateTime startTime2 = DateTime.Now;
DataTable dt3 = new DataTable();
dt3 = dt.Clone();
dt3.Merge(dt);
DateTime stopTime2 = DateTime.Now;
// End Second Duration
TimeSpan duration2 = stopTime2 - startTime2;
编辑:根据建议更新代码 -
DataTable dt = new DataTable();
dt.Columns.Add("customerId", typeof(int));
dt.Columns.Add("username", typeof(string));
DataColumn[] key = new DataColumn[1];
key[0] = dt.Columns[0];
dt.PrimaryKey = key;
for (int i = 0; i <= 100000; i++)
{
DataRow myNewRow;
myNewRow = dt.NewRow();
myNewRow["customerId"] = i;
myNewRow["username"] = "johndoe";
dt.Rows.Add(myNewRow);
}
// First Duration
//DateTime startTime1 = DateTime.Now;
Stopwatch sw1 = new Stopwatch();
sw1.Start();
DataTable dt2 = new DataTable();
dt2 = dt.Clone();
for (int i = 0; i < dt.Rows.Count; i++)
dt2.ImportRow(dt.Rows[i]);
//DateTime stopTime1 = DateTime.Now;
sw1.Stop();
// End First Duration
TimeSpan duration1 = sw1.Elapsed;
// Second Duration
//DateTime startTime2 = DateTime.Now;
Stopwatch sw2 = new Stopwatch();
sw2.Start();
DataTable dt3 = new DataTable();
dt3 = dt.Clone();
dt3.Merge(dt);
sw2.Stop();
//DateTime stopTime2 = DateTime.Now;
// End Second Duration
TimeSpan duration2 = sw2.Elapsed;
label3.Text = duration1.Milliseconds.ToString();
label4.Text = duration2.Milliseconds.ToString();
最佳答案
您测得的差异非常小,特别是因为您的分辨率仅为 20 毫秒 (DateTime)。使用秒表。
您正在为所有记录设置 Id=1,因此您似乎没有合适的主键。这使得这非常没有代表性。
合并应该更快,因为合并可以针对批量操作进行优化。鉴于此,我发现结果更加平等。
关于c# - ImportRow 与合并速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3363208/
为了我自己的启发,我决定测试 DataTable.ImportRow 与 DataTable.Merge 的比较速度。我发现 DataTable.ImportRow 比 DataTable.Merge
我一直在尝试将一个包含许多工作表的 excel 文档合并到一个数据表中,以便我可以在我的 winform 应用程序中显示所述工作表。 通过阅读,我认为 Datatable.import(DataRow
我正在尝试创建一个数据表,然后向其中添加几行。这是我的代码: using System; using System.Collections.Generic; using System.Linq; us
我正在尝试使用 Fusiontables.Table.ImportRows 将 csv 文件导入到我的融合表中。但是当我运行 execute() 时,我得到了一个没有附加信息的 NullPointer
在vb.net中向数据表添加行时,rows.add和importRow有什么区别? Dim dt As DataTable Dim dr As DataRow 'Add row this way...
我在使用 ADO.NET 2.0 合并/导入数据时遇到问题。我需要将数据从一个通用表更新/插入到另一个表,两个表都保持相同的模式。以下代码在本地运行良好,但不会对数据库进行更改: Ol
我需要将 newRow 添加到 MyHandler 并且它应该将该行添加到从传递给 MyHandler 的“方案”内部构建的表中。问题是当我使用 dt.ImportRow(row); 它没有添加任何行
有谁知道如何使用 google-api-javascript-client 成功请求 fusiontables API 的 importrows 方法。我有其他请求在工作,例如列出某个表的列。所以我很
我是一名优秀的程序员,十分优秀!