游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4547|回复: 19

为什么优化了的代码反而更慢了……

[复制链接]

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-2-22 19:49:00 | 显示全部楼层 |阅读模式
原先的代码
        If inV > 180 Or inV < -180 Then inV = 0
        mAngle = inV * DegToIntF

优化后的
        mAngle = (inV And CInt((inV <= 180) And (inV >= -180))) * DegToIntF

一测试结果发现居然还慢了好多…… [em24]

6

主题

396

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2007-2-22 20:32:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

我不觉得这叫优化

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-2-22 21:31:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

函数调用的消耗大于条件语句吧

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
 楼主| 发表于 2007-2-22 22:55:00 | 显示全部楼层

Re: 为什么优化了的代码反而更慢了……

搞清楚了,原来是测试代码的问题……
起先的代码里是用的常量来测试的,结果用条件语句的速度还更快(CPU的分支预测?) [em24]
后来改成用随机数来测试,速度就提上来了
效率还是挺明显的……就是代码有点难看 [em10]

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-23 13:04:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

我原来的
If a = b Then
  c = Ture
Else
  c = False
End If
好像可以变成 c = a = b 很难看。

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
 楼主| 发表于 2007-2-23 22:41:00 | 显示全部楼层

Re: Re:为什么优化了的代码反而更慢了……

Miu.C: Re:为什么优化了的代码反而更慢了……

我原来的
If a = b Then
  c = Ture
Else
  c = False
End If
好像可以变成 c = a = b 很难看。


不会啊,这是非常规范的写法啊

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-24 12:36:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

你那个CInt是转换成Integer吧??不是说Long更快吗??

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
 楼主| 发表于 2007-2-24 12:56:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

VB.net里的Integer就是VB6里Long啦

Option Strict一般都设置成On,所以逻辑值到整型值要强制转换

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-24 13:24:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

谢谢指导,看来转VB.Net还很不习惯啊。

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
 楼主| 发表于 2007-2-24 19:48:00 | 显示全部楼层

Re:为什么优化了的代码反而更慢了……

不会啊……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 13:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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