首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >增加C++程序的CPU使用率

增加C++程序的CPU使用率
EN

Stack Overflow用户
提问于 2011-06-23 12:28:05
回答 6查看 7K关注 0票数 4

我有一个用C++编写的程序,它每秒运行许多for循环,而不使用任何会使其等待的东西。它始终使用2-10%的CPU。有没有办法迫使它使用更多的CPU和做更多的计算,而不会使程序变得更加复杂?此外,我在Windows计算机上使用C::B进行编译。本质上,我问的是有没有办法通过增加CPU使用率来让我的程序更快,如果有,又是如何做到的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-23 12:40:30

假设您的应用程序有能力(PROCESS_SET_INFORMATION访问权限),您可以使用SetPriorityClass来提升您的优先级(当然,这通常会损害所有其他进程)。

你可以使用ABOVE_NORMAL_PRIORITY_CLASS (先试试这个),HIGH_PRIORITY_CLASS (使用这个要非常小心)或者REALTIME_PRIORITY_CLASS (我强烈建议你不应该尝试这个)。

如果您尝试了较高的优先级,但它仍然很低,那么这可能是因为您不受CPU限制(例如,如果您正在将数据写入输出文件)。如果是这样的话,您可能必须找到一种方法来限制自己的CPU。

请记住,这样做可能没有必要(甚至是可取的)。如果你以比其他线程更高的优先级运行,而你仍然没有占用大量的CPU,这可能是因为Windows已经(很可能是理所当然的)决定你不需要它。

票数 3
EN

Stack Overflow用户

发布于 2011-06-23 13:17:47

这取决于为什么它只使用了10%的CPU。如果是因为您使用的是多CPU机器,而您的程序只使用一个CPU,那么您将不得不在代码中引入并发性,以使用额外的马力。

如果它受到其他因素的限制(例如,将数据复制到磁盘或从磁盘复制数据),那么您不需要关注CPU,您需要关注瓶颈是什么。最有可能的是,限制器将从磁盘读取数据,您可以通过使用更好的缓存机制来改善这一点。

票数 6
EN

Stack Overflow用户

发布于 2011-06-23 12:40:47

从系统中要求额外的资源并不是程序的权利或责任。这是操作系统的工作,作为资源调度器。

如果需要使用比操作系统认为合适的更多的CPU时间,您应该使用与平台相关的API向操作系统请求。在这种情况下,这似乎类似于SetPriorityClassSetThreadPriority

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6449332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档