假设我有一个方法,需要在每次运行期间创建少量对象,并且该方法将被多次调用,即从数据库中删除给定行的方法。每次创建一个新对象并调用垃圾收集器(或类似的)在最后销毁它,或者每次重新初始化该值会更好吗?
示例:
每次都使用新的构造函数:
private void RemoveFolder(string dir)
{
OleDbCommand cmd2 = connection.CreateCommand();
OleDbParameter parameterC = new OleDbParameter();
cmd2.Parameters.Add(parameterC);
parameterC.Value = dir;
cmd2.CommandText = "DELETE * FROM [Directories] WHERE Path = ?";
cmd2.ExecuteNonQuery();
cmd2.Dispose();
}
使用单个全局变量(在构造函数中初始化):
private void RemoveFolder(string dir)
{
parameterC.Value = dir;
cmd2.CommandText = "DELETE * FROM [Directories] WHERE Path = ?";
cmd2.ExecuteNonQuery();
}
编辑:当我说更好时,我指的是正常的非“关键任务”程序中的“整体”,其中性能的大幅提升将胜过稳定性的小幅下降。
编辑2
多次调用类似方法的示例
(请注意,这是我的另一个方法,AddFolder)
foreach (DirectoryInfo directory in directories)
{
parameter.Value = directory.FullName;
cmd.CommandText = "SELECT LastModified FROM Directories WHERE Path = ?";
reader = cmd.ExecuteReader();
while (reader.Read())
{
output += reader.GetString(0);
}
if (output == null)
{
Console.WriteLine("New Directory! " + directory.FullName);
AddFolder(directory);
}
output = null;
reader.Close();
}
最佳答案
您的问题是我需要优化该代码吗?
我的总体看法,
- 如果优化它很容易,并且代码仍然保持简单,那么就可以做到这一点, 否则,如果不确定它是否会产生影响,就不要这样做,
- 如果不确定,请测量一下
- 在相关代码附近留下评论
如何衡量? 您可以查看您的程序是否运行缓慢,或者是否使用了太多内存。
关于c# - 全局对象与多个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483566/