两个问题:
我们有一个WindowsForms客户端服务器应用程序(为2.0编写,很快升级到3.5SP 1),与之前的VB 6版本相比,某些客户抱怨它的性能“慢”。我知道,“慢性能”是非常模糊和普遍的,但假设.NET代码可能比VB 6代码慢,因为.NET运行在VM中,这是真的吗?我用C#编写了100%的代码,所以它不是由某个第三方或向导移植的。
并不是所有的顾客都会抱怨,所以我们怀疑一些环保的东西。我们唯一的选择是衡量客户网站的业绩吗?我们的一些客户在Novell网络上使用Windows 2003上的Server 2005。他们会看到与Windows网络上类似的机器相比,数据访问性能会有很大不同吗?
发布于 2008-10-24 20:04:45
我需要提到的第一件事是,.Net代码从未在VM中运行过。虽然.Net程序确实编译为IL,这在某种程度上类似于Java的ByteCode,但重要的区别是,在应用程序启动之前,IL也被编译成完全的原生代码,而不是由VM解释。
接下来是.Net/VB6的比较。我无法指出具体的数据,但从个人经验来看,这取决于你在做什么。
为了说明这一点,让我们考虑六个不同的基准测试应用程序,每个应用程序都有一个vb6和.Net版本。每个应用程序选择一个特定的操作,执行100,000次,然后记录所花费的时间。请注意,这是一个思想实验:我还没有看到真正的应用程序的结果。但我觉得我对这两个平台的优势和弱点有一种感觉。
mult指令是相同的。也就是说,如果您不使用Option Strict,您可能很快就会在任何一个平台上陷入麻烦。由于您使用了C# (本质上始终是Option Strict),这将给您的.Net代码带来优势。重要的一点是,对于所有这些应用程序,.Net应用程序可能会占用更大的内存空间。由于某些原因,开发人员倾向于认为这是一个糟糕的性能特征,而实际上恰恰相反。如果您的应用程序使用更多的内存,那么它可能花在磁盘上的时间更少,而磁盘的运行速度则要慢得多。它也可能缓存更多,这节省了cpu时间。具体来说,对于.Net来说,它会将分配/去分配操作保存到更重要的时期,或者当pc处于空闲状态时。
我没有时间,但有趣的是,有人使用StopWatch实现(至少对于.Net端)来获得每一个方面的真正基准。
发布于 2008-10-24 19:42:57
性能很大程度上取决于你在做什么。
如果可能的话,到现场观看客户使用应用程序。找出经济放缓的原因,然后对其进行分析--最好有类似数量的数据等等。
检查客户端和客户端服务器的性能--找出到底是什么导致了问题。检查网络配置和健康-愚蠢的设置有时可以保持工作,但痛苦缓慢。
发布于 2008-10-24 19:52:25
如果我对你的理解是正确的,那么对某些客户来说似乎没什么问题,但在另一些客户看来却不太好,有人在对你说,.NET和VB6都很好,非常感谢。客户端之间的网络差异无疑是一个关键的差异。服务器操作系统、交换机速度和网络基础设施等但我敢打赌,这与.NET和VB6无关。
https://stackoverflow.com/questions/234994
复制相似问题