C# 为什么不';t程序以全速运行?

C# 为什么不';t程序以全速运行?,c#,performance,cpu,C#,Performance,Cpu,所以我在C#中制作了一个暴力攻击者,我做了一些研究,因为我想让它运行得更快,现在我想知道为什么程序不能像计算机允许的那样快速运行?我的意思是,我知道你的电脑越好,程序就可以运行得越快/越好,但是运行我的程序占用了25%的CPU,60%仍然可用 虽然我知道如果程序被允许使用最大的CPU功率(除非有一个限制器),它可能会造成严重的破坏,但是为什么它们不这样做呢?例如下载,如果你下载一件东西,你会得到全速下载,但如果你同时下载两件东西,它会将每件东西减半,然后一起下载 此外,我如何让我的程序具有更好的

所以我在C#中制作了一个暴力攻击者,我做了一些研究,因为我想让它运行得更快,现在我想知道为什么程序不能像计算机允许的那样快速运行?我的意思是,我知道你的电脑越好,程序就可以运行得越快/越好,但是运行我的程序占用了25%的CPU,60%仍然可用

虽然我知道如果程序被允许使用最大的CPU功率(除非有一个限制器),它可能会造成严重的破坏,但是为什么它们不这样做呢?例如下载,如果你下载一件东西,你会得到全速下载,但如果你同时下载两件东西,它会将每件东西减半,然后一起下载


此外,我如何让我的程序具有更好的性能(不是代码,而是它们运行的实际速度)?

因为有多个因素限制了速度。下载时(根据您的示例),通常是网络连接,而不是CPU。其他因素包括磁盘负载、内存负载等

对于CPU密集型工作,您仍然受限于单个CPU核心的功能。您可以构建使用多个线程和CPU核来划分工作并优化利用可用CPU能力的软件,但这需要额外的工作,不是每个人都感兴趣的工作


如果你想用一种快速的方法来分配你的工作,那就研究一下(像这样的方法)。

可能是因为你的程序只在一个线程上执行,所以不能占用所有处理器的内核。这与你电脑上的内核数量有关,而不是与整个处理器本身有关。如果它使用25%,那就表明你使用的是四核计算机,而且没有多线程,所以所有的东西都在一个内核上运行。你可以很容易地编写一个占用100%cpu的程序。您编写的代码不使用整个CPU,因为它不需要或需要使用更多的内核。CPU使用不是在讨论性能时唯一需要考虑的事情-内存使用,文件系统IO,还有很多其他东西……如果网络连接或jst服务器速度不能处理这些问题,那么X核上最快的软件就无法达到目标。