0

我有一个并行循环,它检查数据库中大约 1 百万条记录并向数据库发送许多请求。我在每次并行循环迭代时重新声明新的 DB 对象。

DataSet ds = new psqlWork().getDataSet("SELECT * FROM z_sitemap_links");
DataTable dt = ds.Tables[0];
Parallel.ForEach(dt.AsEnumerable(), dr =>
{
    new Sitemap().runSitemap(dr[1].ToString(), counter);
    counter++;
});

new Sitemap()在循环外或每次执行时声明对象是否合适?

4

3 回答 3

3

这两种情况下代码的含义完全不同,不知道为什么这个“性能”问题......

如果您的对象在所有迭代中共享 - 在外部声明并共享。否则在本地声明。

于 2012-07-12T23:12:24.670 回答
2

我会在循环内声明它。始终在需要的确切位置声明所有内容。它使您的代码更整洁,更容易重构。

如果您发现系统太慢,甚至还要考虑性能,然后使用分析器找出它慢的地方并一次改进一件事。

于 2012-07-12T23:19:21.797 回答
0

好吧,这取决于对象的作用。如果对象的状态在任何时候改变,它需要保持在循环中。否则,您可以在外面声明它以节省一些分配。

于 2012-07-12T23:09:06.030 回答