【发布时间】:2013-03-31 16:51:39
【问题描述】:
我有两个函数,它们的内容很相似。
// 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 拒绝内联它;可能是由于参数列表中的结构和/或“复杂”的流控制元素)。
还有其他方法,还是我运气不好?
【问题讨论】:
-
Hans Passant 的问题可能吗?你的独立函数的返回类型是什么?
-
拆分成小方法,增加可重用性
-
@JeremyChild 或 Jon Skeet
-
也许尝试另一个 C# 实现,即mono-project.com 或等到您的 C# 实现(即编译器和运行时)得到改进。或者使用一些文本预处理器。
-
@Barmar C# 只有“已定义或未定义”的宏,它们不会扩展到任何东西
标签: c# optimization