Tim*_*der 3 c++ windows cpu performance memory-management
我有一个用C++编写的程序,它每秒运行一些for循环,而不使用任何会让它等待任何原因的东西.它始终使用2-10%的CPU.有没有办法强制它使用更多的CPU并进行更多的计算而不会使程序更复杂?另外,我在Windows计算机上使用C :: B进行编译.从本质上讲,我问是否有办法通过增加CPU的使用率来提高程序的速度,如果是的话,如何实现.
假设您的应用程序具有权限(PROCESS_SET_INFORMATION访问权限),您可以使用SetPriorityClass它来提高优先级(当然,这通常会损害所有其他进程)。
你可以去ABOVE_NORMAL_PRIORITY_CLASS(先尝试这个),HIGH_PRIORITY_CLASS(要非常小心这个)或者REALTIME_PRIORITY_CLASS(我强烈建议你可能不应该尝试这个)。
如果您尝试更高的优先级,但它的时钟仍然很低,那么这可能是因为您不受 CPU 限制(例如,如果您正在将数据写入输出文件)。如果是这种情况,您可能必须找到一种方法来让自己受 CPU 限制。
请记住,这样做可能没有必要(甚至不需要)。如果您以比其他线程更高的优先级运行,并且仍然没有占用大量 CPU,则可能是因为 Windows(很可能是正确的)决定您不需要它。
从系统中要求额外资源实际上不是程序的权利或责任。这是操作系统的工作,作为资源调度程序。
如果需要使用比操作系统认为合适的更多 CPU 时间,您应该使用平台相关的 API 从操作系统请求它。在这种情况下,这似乎是沿着线的东西SetPriorityClass或SetThreadPriority。
这取决于为什么它只使用10%的CPU.如果是因为你使用的是多CPU机器并且你的程序只使用一个CPU,那么不需要,你必须在代码中引入并发才能使用额外的功能.
如果它受到其他东西的限制(例如,将数据复制到磁盘和从磁盘复制数据),那么您不需要关注CPU,您需要关注瓶颈.最有可能的是,限制器将从磁盘读取,您可以通过使用更好的缓存机制来改进.