gpt4 book ai didi

c# - 任何 'quick wins' 都可以使 .NET 远程处理在一台机器上更快?

转载 作者:太空狗 更新时间:2023-10-29 20:53:32 25 4
gpt4 key购买 nike

我非常失望,收到的应用程序在某些情况下至少慢了 100 倍,我必须尽快(大约几周)向我们的客户发布。

通过一些非常简单的分析,我发现瓶颈在于它使用 .NET Remoting 在 Windows 服务和图形前端之间传输数据——两者都在同一台机器上运行。

Microsoft guidelines说“最小化往返并避免繁琐的界面”:写

MyComponent.SaveCustomer("bob", "smith");

而不是

MyComponent.Firstname = "bob";
MyComponent.LastName = "smith";
MyComponent.SaveCustomer();

我认为这是我们应用程序中问题的根源。不幸的是,对 MyComponent.* 的调用(探查器显示 99.999% 的时间花在了此类语句中)在整个源代码中随意散布,我看不到根据上述指南重新设计界面的任何希望。

编辑:事实上,大多数时候前端从 MyComponent 读取属性而不是写入它。但我怀疑 MyComponent 可以在后端随时更改。

我查看是否可以一次从 MyComponent 读取所有属性,然后将它们缓存在本地(忽略上面的随时更改问题),但这将涉及更改数百行代码。

我的问题是:它们是否是我可以尝试提高性能的“速效”方法?

我至少需要 100 倍的加速。我是一名 C/C++/Delphi 程序员,除了我最近几天阅读的内容外,我对 C#/.NET/Remoting 非常不熟悉。我正在寻找可以在几天内完成的事情 - 对代码进行重大重组不是一种选择。

只是为了初学者,我已经确认它正在使用 BinaryFormatter。

(抱歉,这可能是一个糟糕的问题,类似于“如果我排除所有可行的选项,我如何才能可行地修复 X”……但我很绝望!)

编辑 2回应理查德在下面的评论:我认为我的问题归结为:

  1. 当连接的两端在同一台机器上时,是否可以更改任何设置以降低 .NET Remoting 往返的成本?
  2. 是否有任何我可以更改的设置来减少往返次数——这样远程对象属性的每次调用都不会导致单独的往返?这会破坏什么吗?

最佳答案

在 .Net Remoting 下,您有 3 种通过 HTTP、TCP 和 IPC 进行通信的方式。如果 commnuicatin 在同一台电脑上,我建议使用 IPC channel ,它会加快你的通话速度。

关于c# - 任何 'quick wins' 都可以使 .NET 远程处理在一台机器上更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4163613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com