游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2362|回复: 3

关于函数执行速度的问题,有人能帮帮我吗?谢谢!

[复制链接]

5

主题

29

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2008-11-24 06:33:00 | 显示全部楼层 |阅读模式
  最近看了本关于游戏引擎的书,想模仿书上的例子编个小引擎。在编写Math库的时候,我发现即使是一个无返回值,不传参数,函数体是空的什么都不执行的函数,甚至是内联,它的执行速度也没有D3D库的一些函数快。是代码有问题呢?还是D3D库作了什么优化?我比较不聪明,实在是不理解,求大家帮帮忙!!!!   0rz 0rz 0rz
(我测试函数速度的方法比较笨,就是循环1千万次,减出时间差)


代码:
        int k,j;
        D3DXVECTOR3 d3dvec(0.0f,0.0f,1.0f);
        k=timeGetTime();
        for(int i=0;i<10000000;i++)
        {
                 //Frame();
                 D3DXVec3Normalize(&d3dvec,&d3dvec);
        }
        j=timeGetTime()-k;


这是函数Frame
void Frame(void)
{
}
j是时间。
执行10000000次Frame的时间比D3DXVec3Normalize大。
按理说D3DXVec3Normalize里即使代码再少也不能比没代码的快啊。
[em7] [em7] [em7] [em7] [em7] [em7] [em7] [em7]

9

主题

21

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2008-11-24 22:15:00 | 显示全部楼层

Re:关于函数执行速度的问题,有人能帮帮我吗?谢谢!

try to use release

5

主题

29

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2008-11-25 02:18:00 | 显示全部楼层

Re: 关于函数执行速度的问题,有人能帮帮我吗?谢谢!

  恩,恩,十分感谢这位大侠。情况很有所改观,以前从来没注意过debug,release。。。
  但是又出了一个问题,如果把那个空的函数放到我自己定义的.lib文件里的话,速度仍然比较慢,还是没D3D库的某些函数快。

  我自己定义的.h:
  extern "C" void f(void);
  我自己定义的.lib
  void f(void)
  {
  }
  //inline void f(void)
  //{
  //}
  (内联也试了)

[em6] [em6] [em6] [em6] [em6] [em6]

5

主题

29

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2008-11-25 15:37:00 | 显示全部楼层

Re:关于函数执行速度的问题,有人能帮帮我吗?谢谢!

我知道了,这次是我弄错了,我链接的一直都是debug的那个.lib把他换成release生成的.lib就正常了.
再次感谢whati ~~~~~~~~~~~
^0^  ^0^   ^0^   ^0^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 20:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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