我以前有 5 个项目,每个项目在我的 C# 应用程序中有 5-10 个目录。现在我已将其更改为 10 个项目,每个项目可以有 2-3 个目录。
在我的 Web 应用程序中,我现在引用了这十个项目,而不是之前的 2-3 个项目。
如果我以这种方式继续开发并且随着应用程序变大而添加更多项目,是否会有任何性能损失。我想知道的是卸载时间、内存使用情况(我引用的每个 DLL 都存储在项目本身中)以及我的代码必须从一个项目中的对象移动到另一个项目的时间。
我以前有 5 个项目,每个项目在我的 C# 应用程序中有 5-10 个目录。现在我已将其更改为 10 个项目,每个项目可以有 2-3 个目录。
在我的 Web 应用程序中,我现在引用了这十个项目,而不是之前的 2-3 个项目。
如果我以这种方式继续开发并且随着应用程序变大而添加更多项目,是否会有任何性能损失。我想知道的是卸载时间、内存使用情况(我引用的每个 DLL 都存储在项目本身中)以及我的代码必须从一个项目中的对象移动到另一个项目的时间。
如果您引用所有这些项目,加载程序集的抖动只会受到轻微的惩罚。
但我认为你问错了问题。你不应该根据你有多少类或目录将你的代码分成不同的程序集。如果是这样,一个项目将是最佳的。
您应该关注可以内部化的内容。如果您有这十个程序集,您的程序的哪些部分可以对程序的其余部分隐藏。是否可能存在一个依赖树,其中您的某些项目不必引用其他项目?
那应该是您的电话,而不是有多少文本文件放在哪里。
是的,但在运行时并不明显。
Visual Studio 加载多个项目的速度会变慢。对于 5-10 个项目,您可能不会注意到,但对于 30-40 个,您会开始注意到。
编译(通常)会更慢。这是因为需要将项目依赖项复制到依赖它们的项目的输出文件夹中。如果您有更多项目,则需要复制更多输出文件。您可以通过将每个项目的输出文件夹设置到同一个位置来缓解这种情况,但对于 Web 应用程序项目来说,这更加困难,而且无论如何这都是一种痛苦。
在运行时,在解析程序集时,所有这些额外的磁盘访问都会带来性能损失。
但是,在实际执行代码时,对性能的影响可以忽略不计(如果有的话)。在一个程序集中调用代码并不比在另一个程序集中调用代码更昂贵(一旦它被加载并 JITed,并假设它不会被内联)。
性能差异可以忽略不计(启动时间可能会慢几毫秒)。如果您的应用程序架构在多个项目中更好,那就去吧。