在客户站点比较.NET性能和VB 6性能的最佳方法是什么?
两个问题:在客户站点比较.NET性能和VB 6性能的最佳方法是什么?,.net,sql-server,performance,vb6,novell,.net,Sql Server,Performance,Vb6,Novell,两个问题: 有人能告诉我比较.NET性能和VB6性能的无偏数据吗?我已经找过了,但很难找到 当应用程序在客户网站上运行时,将.NET性能与VB 6性能进行比较的最佳方法是什么 我们有一个WindowsForms客户端-服务器应用程序(为2.0编写,很快升级到3.5 SP 1),与以前的VB 6版本相比,某些客户抱怨该应用程序“性能低下”。我知道,“性能慢”是非常模糊和笼统的,但是假设.NET代码可能比VB6代码慢,因为.NET在VM中运行,这是真的吗?我用C#编写了100%的代码,因此它不是由第
在客户站点检查客户机和服务器的性能-找出问题的真正原因。检查网络配置和运行状况-愚蠢的设置有时会让事情正常运行,但速度非常慢。与VB6应用程序相比,性能可能更多地是由于应用程序设计,而不是c#与VB6。我估计,如果设计得当,C#app的速度将提高9.5/10倍。Net不会在VM内部运行。CLR JIT将.Net应用程序编译为机器级代码,速度非常快。原因是运行速度比未管理的代码慢一点,因为运行在下的沙盒.Net是受管理的,这会带来一些开销
如果我没有弄错的话,在一些客户那里似乎很好,但在其他客户那里却不行,有人对你说它是.NET,VB6也很好,非常感谢。客户端之间的网络差异无疑是一个关键差异。服务器操作系统、交换机速度和网络基础设施等——需要探索的变量太多了。但我敢打赌,这与.NET与VB6无关。如果你说的是用VB 6.0和VB.NET编写的同一个客户端应用程序,那么VB 6.0应用程序很可能会更快地进入第一个屏幕(因为.NET JIT兼容和装配加载)。之后,性能应该大致相同
问题是——在任何实际情况下——应用程序的架构都会有所不同,真正的性能比较没有意义,我需要提到的第一件事是.Net代码从来不会在VM中运行。虽然.Net程序被编译成IL(某种程度上类似于Java的字节码)是事实,但重要的区别在于,IL在应用程序启动之前也被编译成完全本机代码,而不是由VM解释 转到.Net/VB6比较。我不能指出具体的数据,但从个人经验来看,这取决于你在做什么 为了说明这一点,让我们考虑六个不同的基准测试应用程序,每个应用程序都有vb6和.Net版本。每个应用程序选择一个特定的操作,执行100000次,然后记录所用的时间。请注意,这是一个思维实验:我实际上还没有看到来自真实应用程序的结果。但我觉得我对这两个平台的优势和劣势都有感觉
- 应用程序A执行一些严重的cpu密集型数字运算。在这种情况下,我不得不相信这里的结果几乎是一样的。VB6和.Net都编译为本机代码,因此cpu
指令是相同的。这就是说,如果你不使用mult
,你很快就会在任何一个平台上遇到麻烦。由于您使用了C#(本质上总是选项Strict
),这可能会给您的.Net代码带来优势选项严格
- 应用程序B退出并从数据库中检索值。同样,结果可能非常接近,但我不得不给.Net一个非常微小的优势,原因有两个:它使用本机sql客户端,据说速度要快一点,它还可以实现自动连接池等功能,并且可以更轻松地排除连接一次并重新使用该连接等功能,而不是重复连接。但是,如果你在代码方面对苹果进行比较,两者可能非常接近
- 应用程序C反复显示和隐藏表单。在这里,我必须向vb6点头。它基于一个较旧的、不太炫目的小部件集,坦率地说,它的渲染成本更低。此外,WinForms组件的速度并不那么快。然而,差异可能并不像你想象的那么大,而且你也可能没有经常完全重画表单。这可能是您的用户抱怨的缓慢
- 应用程序