我有两个库,第一个是在 vb.net 中完成的原始库,第二个是在 c# 中完成的。
做同样的事情。
vb.net 比 c# 快大约 10%,这很奇怪
所以我发现这似乎是放缓的原因,通过查看IL
两者的代码(我会说接近 99% 的il
代码是相同的);
在c#中所有方法调用都有
hidebysig
但在vb.net中没有这可能是性能问题吗?
在c#中,你必须在使用它之前初始化一个局部变量
这在 c# 中不起作用
void test() { int a; a += 1; }
这将
void test() { int a = 0; a += 1; }
虽然这项工作在 vb.net
Sub test() Dim a As Integer a += 1 End Sub
这在 c# 中会导致 2 多条 IL 行,我敢肯定,这会导致性能问题
在 vb.net 中,我似乎无法
il
使用代码call
,它总是使用callvirt
,而 c# 总是使用call
这可能是性能问题吗?
.maxstack 在 c# 中有时更大
这可能是性能问题吗?
最后,我试图了解如何恢复 10% 的速度损失。到目前为止我一无所知
如果你想看这里,你可以自己反编译,我用的是ilspy;
ZIP 文件,编译版本
ChessEngine.dll
ChessEngineSharp.dll
ConsoleApplication1.exe