gpt4 book ai didi

c# - 我可以避免这种代码复制粘贴吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:22 24 4
gpt4 key购买 nike

我有两个函数,它们的内容非常相似。

// mock-up code

bool A() {
while(1000000) {
// 3 lines of A() specific code
// 15 lines of shared code, pasted in
// 1 lines of A() specific code
}
}
bool B() {
while(1000000) {
// 2 lines of B() specific code
// 15 lines of shared code, pasted in
// 2 lines of B() specific code
}
}

我不想将 15 行共享代码粘贴到两个函数中(因为这些行非常复杂,如果我稍后更改该代码,我不想必须记住在两个地方)。

如果我将这 15 行代码放入一个单独的函数中,我将对性能产生重大影响(JIT 拒绝内联它;可能是由于参数列表中的结构和/或“复杂的”流控制元素)。

还有其他方法吗,还是我运气不好?

最佳答案

您所说的这种“重大”性能影响远没有您想象的那么重要。

如果它如此重要,您可以尝试告诉 JIT 编译器使用 MethodImplOptions Enumeration 将其内联,尽管如果方法不是虚拟的,他应该这样做。 For more information .

示例(来自 MSDN):

using System;
using System.Globalization;
using System.Runtime.CompilerServices;

public class Utility
{
[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
public static string GetCalendarName(Calendar cal)
{
return cal.ToString().Replace("System.Globalization.", "").
Replace("Calendar", "");
}
}

关于c# - 我可以避免这种代码复制粘贴吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com