首页 / C# / 为什么C#性能比VB慢
为什么C#性能比VB慢
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么C#性能比VB慢,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1384字,纯文字阅读大概需要2分钟。
内容图文
![为什么C#性能比VB慢](/upload/InfoBanner/zyjiaocheng/756/abfcd5d6d4c54ef48019dff95595ebb8.jpg)
我有两个库,第一个是在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 file, compiled version
ChessEngine.dll
ChessEngineSharp.dll
ConsoleApplication1.exe
解决方法:
hidebysig just controls how name lookup in overridden methods works.
which in c# cause 2 more IL line which, I’m pretty sure, cause a performance issue
不,它没有.应该生成相同的IL – 或等效代码.在VB中,初始化是强制性的,只是如果您没有明确地执行它,编译器会为您隐式执行它.
in vb.net it seem I cannot get the il code to use call, it always use callvirt while c# always use call
我很确定你的方法错了. C#将始终在虚拟方法上使用callvirt,VB支持使用MyClass.Method()语法进行调用.
事实上,如果您的基准测试显示VB快10%,那么我怀疑您的基准测试中存在错误,仅此而已.
内容总结
以上是互联网集市为您收集整理的为什么C#性能比VB慢全部内容,希望文章能够帮你解决为什么C#性能比VB慢所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。