游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2760|回复: 5

[讨论(初级)] 下面代码片有什么改进方法

[复制链接]

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
发表于 2006-11-11 21:13:00 | 显示全部楼层 |阅读模式
情况1,频繁调用,情况2,调用次数很少
//类的方法
HRESULT CAnimationMesh::FrameMove()
{
    // Setup world matrix
1    D3DXMATRIXA16 matWorld;
2    D3DXMatrixTranslation( &matWorld, 1.0, 1.0, 200.0 );
3    UpdateFrameMatrices(m_pFrameRoot, &matWorld);

    return S_OK;
}

再问一问题,一般情况下 局部变量效率高还是全局变量,假设该变量只在一个函数中使用,并不需要记忆功能(应该要分几中情况,我没想完),
是不是能使用局部变量就不用全局,我初步感觉局部变量效率高点.

6

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2006-11-12 17:35:00 | 显示全部楼层

Re:[讨论(初级)] 下面代码片有什么改进方法

      以我的观点来看我觉得局部变量效率是高点.....但是如果该变量在多外用到的话我就会使用全局变量.

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
 楼主| 发表于 2006-11-12 22:03:00 | 显示全部楼层

Re:[讨论(初级)] 下面代码片有什么改进方法

     好象局部变量利于数据集中,因为在读数据时,计算机会预取一段数据.这样的话提高了在CPU缓冲中的命中率.产生这个这个看法是因为我想到以前看过的书里写了类似的

     我自己继续分析下:   
     在运行代码片断的时候,全局变量的也可以一起预先读入高速缓存吧?
     临时变量方面,它是直接在栈中分配空间,这个效率是不是会高点呢?分配这个过程是不是会浪费时间呢?

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
发表于 2006-11-12 23:37:00 | 显示全部楼层

Re:[讨论(初级)] 下面代码片有什么改进方法

我认为  全局变量 效率要比 局部变量高。 因为全局变量定义在 DATA区,而不是在堆栈里。
所以 使用时直接取地址,不需要移动栈针。 但是全局变量不利于模块化,所以好处和坏处抵消。

变换矩阵多的话,可以将 矩阵操作 改为向量操作吧(我认为)
这样可避免 处理 矩阵中 零元素。但我想你的问题不应该是矩阵影响,
而应该是算法影响。试试 视锥裁减(这算法我不会)

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-11-13 10:08:00 | 显示全部楼层

Re:[讨论(初级)] 下面代码片有什么改进方法

建议:
1. 谨记80/20原则,把有限的精力放在应该优化的地方
2. 应该评测而不是臆测

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
 楼主| 发表于 2006-11-13 11:46:00 | 显示全部楼层

Re:[讨论(初级)] 下面代码片有什么改进方法

因为这个问题经常遇到,所以我想还是要解决下.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 20:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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