POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
楼主: jinzhaohua
打印 上一主题 下一主题

其实我到现在还是搞不清楚,如果显卡有自己的核心,那CPU跑那么高到底是在处理什么?

[复制链接]
21#
发表于 2010-9-15 14:36 | 只看该作者
int k=1
if(k
xzmmpb 发表于 2010-9-15 13:09


溢出
回复 支持 反对

使用道具 举报

22#
发表于 2010-9-15 14:37 | 只看该作者
理论什么的我不清楚,实际情况就是:窗口模式运行尘埃2,同时打开任务管理器和GPU-Z来监视占用情况,CP ...
asdf007 发表于 2010-9-15 14:25


还分析啥,dirt2本来就不占什么CPU
回复 支持 反对

使用道具 举报

23#
发表于 2010-9-15 15:52 | 只看该作者
cpu负责运行操作系统,负责把程序交过来的任务分配给各种硬件(显卡,声卡)去完成,如果cpu不够力,显卡就 ...
westlee 发表于 2010-9-15 11:46


三维图形运算中,CPU负责顶点生成,有了顶点信息后再把数据传给显卡处理。CPU慢了,GPU就会吃不饱了
回复 支持 反对

使用道具 举报

24#
发表于 2010-9-15 16:37 | 只看该作者
那目前有哪个主流游戏要100%占用CPU的?
回复 支持 反对

使用道具 举报

25#
 楼主| 发表于 2010-9-15 16:42 | 只看该作者
对不起啊,我其实是因为在家里用250/880G玩CD6,才这样问的…………看zol的评测文章,说“什么处理器能发挥460的性能”,看到如果用i5 750以下的,瓶颈出在CPU而不是显卡,所以我就怕怕440是否能发挥5750的最大性能……要不多花钱我心里憋的慌,呵呵
其实我倒不是说不用CPU处理游戏数据,只是奇怪,如果独显的核心处理图形,那CPU应该轻松些啊……你看那星际2……把U都累坏了呢…………
回复 支持 反对

使用道具 举报

westlee 该用户已被删除
26#
发表于 2010-9-15 17:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

westlee 该用户已被删除
27#
发表于 2010-9-15 17:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

28#
发表于 2010-9-15 17:03 | 只看该作者
我知道,其实就是Infinite Loop。
但是我的意思是写游戏的程序员都是水平很厉害的,一般都不会犯 ...
yyzjp 发表于 2010-9-15 14:14

给你贴两段简单的程序说明这个问题。
第一段就会每时每刻100%,第二段就不会。

不好的程序:
while (1)
{
       if (::PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))
       {
            switch(msg.message)
            {
            case WM_MOUSEMOVE:
                  ....
             case WM_QUIT:
                   return 0;
             }
         }
}

好的程序:
while (1)
{
       if (::PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))
       {
            switch(msg.message)
            {
            case WM_MOUSEMOVE:
                  ....
             case WM_QUIT:
                   return 0;
             }
         }
         else
               ::WaitMessage();

}
回复 支持 反对

使用道具 举报

29#
发表于 2010-9-15 17:05 | 只看该作者
很简单啊,单核闪龙在这个游戏这个场景中发送给显卡的指令已经可以让98gt满载了,用e84去推,当然就没啥 ...
westlee 发表于 2010-9-15 17:01

那你的意思是说 所谓的cpu能不能推得动显卡,是由游戏场景决定,而不是由他们的定位和价格来决定的吧
回复 支持 反对

使用道具 举报

头像被屏蔽
30#
发表于 2010-9-15 17:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

31#
发表于 2010-9-15 17:29 | 只看该作者
没有CPU,显卡有啥用
cyberlife 发表于 2010-9-15 10:17



    没而CPU ,,显卡可以YY用,
回复 支持 反对

使用道具 举报

32#
发表于 2010-9-15 17:31 | 只看该作者
给你贴两段简单的程序说明这个问题。
第一段就会每时每刻100%,第二段就不会。

不好的程序:
while  ...
zhjecho 发表于 2010-9-15 17:03

多谢!

虽然我并不精通Windows 消息编程,但是如果是
单核CPU,即使第一种写法它也不会耗尽100% 的CPU毕竟很多线程在跑,如果它的优先级设置的特别高最多也就是它的时间片会多拿点,理论上100% 的CPU被它占用住是不可能的。
多核CPU就更不可能了。

对于你的第二种写法,有点疑问:
WaitMessage:
当一个线程的消息队列中没有消息存在时,WaitMessage函数会使该线程中断并处于等待状态,同时把控制权交给其它线程,直到被中断的那个线程的消息队列中有了新的消息为止。

你的PeekMessage都返回False了就说明消息Queue里面啥都没有,为啥你还要调用WaitMessage? 从上面文档看,WaitMessage会做许多事情,你这么频繁调用它是不是本身也在占用CPU?

我记得很多教科书上 Main函数里面并没有包含WaitMessage这个调用。
回复 支持 反对

使用道具 举报

lxlfive 该用户已被删除
33#
发表于 2010-9-15 17:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

乐极生悲 该用户已被删除
34#
发表于 2010-9-15 17:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

35#
发表于 2010-9-15 21:50 | 只看该作者
回复 16# pivk


    我自己用5000+和9800GTX 玩NBA2k10 帧数就20-35 ,换开核5000就是85-100
回复 支持 反对

使用道具 举报

36#
发表于 2010-9-15 23:05 | 只看该作者
不调用WaitMessage就会一直在while里循环。
WaitMessage使线程挂起,所以即使一直没有新的消息,也不会一直调用WaitMessage. 线程的TCB会被OS挂到一个等待链表上,直到有新消息后OS才会唤醒它,所以该线程不会占用CPU运算器资源。当然它的数据和代码可能还在CPU的cache里。
回复 32# yyzjp
回复 支持 反对

使用道具 举报

37#
发表于 2010-9-15 23:07 | 只看该作者
+1
回复 21# hakase
回复 支持 反对

使用道具 举报

38#
发表于 2010-9-15 23:16 | 只看该作者
挖,技术贴啊技术贴,喜欢~!
回复 支持 反对

使用道具 举报

39#
发表于 2010-9-16 01:42 | 只看该作者
ls那位写if程序的,貌似怎么也循环不起来吧,if换成while还差不多
回复 支持 反对

使用道具 举报

40#
发表于 2010-9-16 06:41 | 只看该作者
本帖最后由 pangauto 于 2010-9-16 06:57 编辑
理论什么的我不清楚,实际情况就是:窗口模式运行尘埃2,同时打开任务管理器和GPU-Z来监视占用情况,CP ...
asdf007 发表于 2010-9-15 14:25


四个核心占用都不超过50%??你确定?
我Q9550超3.6G ,260+,1920x1080,玩dirt2游戏中监控四个核心占用率偶尔都会到70%以上,难道Q9那么菜?!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-9-14 00:12

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表