C# 在随后的循环中调用Prepare会带来伤害、帮助还是没有任何区别?

C# 在随后的循环中调用Prepare会带来伤害、帮助还是没有任何区别?,c#,sql-server-ce,C#,Sql Server Ce,使用foreach块中的以下代码: if (!First) { cmd.Parameters[0].Value = Dept.AccountID; cmd.Parameters[1].Value = Dept.AccountName; // should this call cmd.Prepare() too? } if (First) { cmd.Parameters.Add("@account_id", Dept.AccountID); cmd.Pa

使用foreach块中的以下代码:

if (!First)
{
    cmd.Parameters[0].Value = Dept.AccountID;
    cmd.Parameters[1].Value = Dept.AccountName;
    // should this call cmd.Prepare() too?
}

if (First)
{
    cmd.Parameters.Add("@account_id", Dept.AccountID);
    cmd.Parameters.Add("@name",Dept.AccountName); 
    cmd.Prepare();
    First = false;
}
…我在“不是第一个”条件的末尾添加了评论


应该每次调用Prepare(),还是在First为true时对Prepare()的调用对于每个后续循环都足够了?

一次调用cmd.Prepare()就足够了。它不关心参数值,只关心参数大小。多次调用它不会导致问题,但也没有必要。只需调用cmd.Prepare()一次就足够了。它不关心参数值,只关心参数大小。多次调用不会引起问题,但也没有必要。

有无计时?其中一个比另一个快吗?是的,“有”需要摇两下羊羔的尾巴,“没有”需要摇三下激动的山猫粗尾巴。或者,更简洁地说:不。你是在暗示我应该这样做,这就是我问题的答案,但对我来说不是这个问题——我相信任何人都不会注意到时差。我想知道这样做是有益的还是有害的。我的观点是,你可以对它进行测试(当然,你可以使用一些工具来分析性能差异,人类在小范围内是不会注意到的)。也许你无法分辨两者的区别,在这种情况下,这并不重要。但也许你会。这对你来说是一个更好的答案,而不是有人根据谁知道什么来建议你是否应该。是的,我明白你的意思,但我不同意什么是更好的答案。那么也许你应该把你的问题表达得更好。你关心的是性能还是其他方面?如果是别的东西,具体是什么?你有没有用时间来计时?其中一个比另一个快吗?是的,“有”需要摇两下羊羔的尾巴,“没有”需要摇三下激动的山猫粗尾巴。或者,更简洁地说:不。你是在暗示我应该这样做,这就是我问题的答案,但对我来说不是这个问题——我相信任何人都不会注意到时差。我想知道这样做是有益的还是有害的。我的观点是,你可以对它进行测试(当然,你可以使用一些工具来分析性能差异,人类在小范围内是不会注意到的)。也许你无法分辨两者的区别,在这种情况下,这并不重要。但也许你会。这对你来说是一个更好的答案,而不是有人根据谁知道什么来建议你是否应该。是的,我明白你的意思,但我不同意什么是更好的答案。那么也许你应该把你的问题表达得更好。你关心的是性能还是其他方面?如果是别的,具体是什么?