VB.NET 编译时间慢 - 无磁盘或 CPU 活动

问题描述 投票:0回答:2

我们有一个用 VB.NET 编写的客户端项目。在其中一个项目中,我们有大约 100 个模块,这些模块都非常简单。它们是在对象类型之间进行转换的扩展方法。这是一个小片段:

Public Module ScheduleExtensions

<System.Runtime.CompilerServices.Extension()> _
Public Function ToServicesData(ByVal source As Schedule) As ScheduleServicesData
    If (source IsNot Nothing) Then
        Dim target As New ScheduleServicesData
        With target
            .CenterId = source.CenterId
            .EmployeeGuid = source.EmployeeGuid
            .EndDateTime = source.EndDateTime

问题是,仅这个项目就需要 2 分钟以上的时间来构建。我运行了 diskmon 和 filemon,当构建似乎挂起时,它不会访问文件系统。在大部分执行过程中,CPU 使用率也很低。大约 2 分钟后,构建完成,并且出现磁盘和 CPU 活动。该问题可以在任何机器上重现(到目前为止已尝试过 4 次)。

我竟然使用vbc命令行编译项目,问题也同样存在。

VB.NET 扩展方法是否存在导致编译时间不佳的问题?这是我们使用的唯一比循环/获取/设置等更复杂的功能。

vb.net performance
2个回答
1
投票

没有显着 CPU 或磁盘活动的性能问题总是与网络等待相关,要么是网络性能本身,要么更有可能是等待其他系统上的服务的响应。 现在我在示例中没有看到任何应该存在该问题的内容,因此我必须假设问题来自您的项目、项目设置、VS 环境或系统环境中的其他内容。

您可能会尝试获取一个可以监控系统中所有网络调用并查看发生了什么的工具。


0
投票

仅凭这样的小样本很难知道问题出在哪里。 编译器中的扩展方法支持本质上并不慢,并且我们在该领域进行了大量回归测试。 如果存在错误,则可能是多种因素共同导致的。

如果您有时间,请在

提交有关此问题的错误

如果您可以提供重现问题的小样本,则可以更轻松地调查该错误。

© www.soinside.com 2019 - 2024. All rights reserved.