当我在c#中使用多个项目作为一个项目中的多个目录的替代方案时,是否会有性能损失?

本文关键字:项目 方案 性能 损失 是否 一个 | 更新日期: 2023-09-27 18:05:38

我之前有5个项目,每个项目在我的c#应用程序中有5-10个目录。现在我把这个改为10个项目,每个项目可以有2-3个目录。

在我的web应用程序中,我现在引用了这十个项目,而不是以前的2-3个。

如果我继续以这种方式开发,并且随着应用程序变大而添加更多项目,是否会有性能损失?我想知道的事情是一个卸载时间,内存使用(我引用的每个DLL都存储在项目本身中)以及我的代码必须从一个项目中的对象移动到另一个项目的时间。

当我在c#中使用多个项目作为一个项目中的多个目录的替代方案时,是否会有性能损失?

如果您引用了所有这些项目,那么在加载程序集时就会有轻微的抖动。

但是我认为你问错了问题。您不应该根据拥有多少类或目录将代码划分为不同的程序集。如果是这样,一个项目将是最优的。

你应该关心的是什么可以成为内部的。如果您有这十个程序集,那么您的程序的哪些部分可以对程序的其余部分隐藏。是否存在依赖关系树,其中一些项目不必引用其他项目?

这应该是你的决定,而不是有多少个文本文件在哪里。

性能差异可以忽略不计(启动时间可能会慢几毫秒)。如果您的应用程序架构适合多个项目,那么就使用它吧。

是的,但在运行时不明显。

Visual Studio加载多个项目的速度会变慢。对于5-10个项目,你可能不会注意到,但是对于30-40个项目,你会开始注意到。

编译(通常)会更慢。这是因为需要将项目依赖项复制到依赖它们的项目的输出文件夹中。如果您有更多的项目,您就有更多的输出文件需要复制。您可以通过将每个项目的输出文件夹设置到相同的位置来缓解这个问题,但对于web应用程序项目来说,这更困难,而且无论如何都很痛苦。

在运行时,当解析程序集时,所有这些额外的磁盘访问都将涉及性能损失。

但是,在实际执行代码时,性能影响可以忽略不计(如果有的话)。在一个程序集中调用代码并不比在另一个程序集中调用代码更昂贵(一旦它被加载和jit,并且假设它不会被内联)。