c# - 全局对象与多个新对象?

标签 c# ms-access object oledb methodology

假设我有一个方法,需要在每次运行期间创建少量对象,并且该方法将被多次调用,即从数据库中删除给定行的方法。每次创建一个新对象并调用垃圾收集器(或类似的)在最后销毁它,或者每次重新初始化该值会更好吗?

示例:
每次都使用新的构造函数:

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();
 }

最佳答案

您的问题是我需要优化该代码吗?

我的总体看法,

  1. 如果优化它很容易,并且代码仍然保持简单,那么就可以做到这一点, 否则,如果不确定它是否会产生影响,就不要这样做,
  2. 如果不确定,请测量一下
  3. 在相关代码附近留下评论

如何衡量? 您可以查看您的程序是否运行缓慢,或者是否使用了太多内存。

关于c# - 全局对象与多个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483566/

相关文章:

java - 我可以将对象从字符串对象数组转换为字符串吗?获取 classCastException

c# - 从 UWP XAML 中的 HyperlinkBut​​ton 中删除下划线

c# - 如何从 C# 将 [switch] 参数传递给 PowerShell 脚本?

c# - WWSAPI 等效于 App.config 中的 C#/.net <serviceCertificate>

ms-access - access 2007 bug - 间歇性查询参数提示

sql-server-2008 - 无法开始分布式事务 : Linked Server -> Access database

java - 在 Activity 之间使用相同的对象

c# - 二进制值的数据类型是什么?是字符串数据类型吗?

delphi - 压缩 Access 数据库

javascript - 从对象中切片属性并进行计数