VB.NET SLOW 编译时间 - 没有磁盘或 CPU 事件

标签 vb.net performance compiler-construction

我们有一个用 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 扩展方法是否存在导致编译时间不佳的问题?这是我们使用的唯一比循环/获取/设置等更复杂的功能。

最佳答案

显示没有显着 CPU 或 DISK 事件的性能问题总是与网络等待有关,无论是网络性能本身,还是更可能的是等待其他系统上服务的响应。现在我在示例中看不到任何应该有这个问题的东西,所以我必须假设问题来自你的项目中的其他东西,或者你的项目设置或你的 VS 环境,或者你的系统环境。

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

关于VB.NET SLOW 编译时间 - 没有磁盘或 CPU 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266440/

相关文章:

.net - 没有公司名称无法注册 vb.net express 2012

python - 为什么 str.replace 对于单个异常值要慢得多?

c++ - 使用其他编译器在 C++ 中清除屏幕

vb.net - IF 比较时忽略大小写

vb.net - 如何在构造中引用 "with"创建的对象?

java - 抛出异常的哪一部分是昂贵的?

file - 很多小文件还是几个大文件?

java - 在 Java 中构建 IDE 的最简单方法是什么?

c++ - 程序的运行速度与Debug模式或Release模式有关吗?

vb.net - linq中的后期绑定(bind)