【发布时间】:2018-03-06 13:43:36
【问题描述】:
只需要一个指向正确方向的点。
我已经按照 Cisco 提供的说明创建了 Cisco Unified Call Manager API,用于 CUCM 的 API 称为 AXL。 它目前在我的 C# WPF 项目中并且工作正常(我已经成功检索了一些电话数据),问题是 API 位于一个 345K 行长的单个 CS 文件中。当我尝试使用 API 进行第一个操作时(在它编译后),这会导致非常长的延迟。
正如思科论坛上的一位用户所建议的:
很有可能您的问题在于 .net 框架生成 xml 序列化程序集所花费的时间。
在 .net 上使用 AXL 时预先生成 xml 序列化程序集,您的第一个响应会快得多。
我尝试使用来自this 线程中的用户brain backup 的说明预先生成它。不幸的是,API 的第一次使用仍然是大约 45 秒(它确实减少了大约一分钟)。我对 Visual Studio 中的调试工具不是非常精通,因此不确定如何检查究竟是什么导致了问题(但它确实看起来像是与生成 XML 相关的问题)。
我想知道是否有人可以推荐一种方法来从 CS 文件中删除不必要的方法(其中 99% 无论如何都不会使用),而无需手动重新创建它。任何可以从 CS 文件中提取/删除方法及其依赖项的工具都非常出色。
【问题讨论】:
-
45 秒长得离谱,但它是一个神奇的数字。这是大多数机器上默认的 TCP/IP 连接超时。使用 SysInternals 的 TcpView 实用程序查看谁被调用。
-
有时间我会看看 TcpView。不幸的是,我不认为这是一个超时问题,因为 Visual Studio 中的调试器显示了一堆垃圾收集、持续 20% 的 CPU 使用率和 RAM 增加:i.imgur.com/ydPbUVw.png 小缺口是最终返回结果的地方,CPU 使用率也回到空闲状态。返回的数据并不多,相同代码的进一步运行只需要一秒钟。
-
嗯,它肯定在某事上非常努力。当需要这么长时间时,您可以使用简单的代码分析。使用 Debug > Break All 并查看调用堆栈,必要时多看几次。
标签: c# wpf visual-studio cisco-axl