网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月29日漏签0天
vb吧 关注:156,102贴子:1,166,217
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 21回复贴,共1页
<<返回vb吧
>0< 加载中...

能用sqr函数,就尽量不要用指数运算!

  • 只看楼主
  • 收藏

  • 回复
  • 璐村惂鐢ㄦ埛_0748V5Z馃惥
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

上述测试表明,sqr的速度大约是指数运算的2.5倍左右。
但是,修改command2的单击事件的j循环终值为250,耗时却只有0.16左右;直到增加到400,两者才基本持平(sqr耗时仍稍少,但可以忽略)。
所以,在能选择sqr函数等vb内置函数时,不要自己去写各种运算——尤其在运算量较大的时候。


  • zhngheng4321
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶一下


2025-07-29 16:54:02
广告
不感兴趣
开通SVIP免广告
  • yjryym
  • 多线程
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
可以再对比一下 X ^ Y 和 Exp(Log(X) * Y) 哪个快?毕竟在 X > 0 的情况下,这两个算法的结果是相等的。


  • 天之坦克杀手
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如果一样设计sqr函数就没有意义了


  • yjryym
  • 多线程
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@初音七奈 我测试了一下,最慢的肯定是你说的循环乘法,但是我没想到二分法居然比^更快,最快的是Exp(Log(X) * Y)
第一次测试,可以看到Pow1所花的时间最长:

由于Pow1花的时间太长,而其它三个由太短,所以排除Pow1后再加大运算量进一步对比这三个算法之间的差别:

Option Explicit
' VB6自带乘法算法
Public Property Get Pow0(ByVal X As Double, ByVal Y As Long) As Double
Pow0 = X ^ Y
End Property
' 循环乘法,复杂度:O(N)
Public Property Get Pow1(ByVal X As Double, ByVal Y As Long) As Double
Dim I&: Pow1 = 1
For I = 1 To Abs(Y)
Pow1 = Pow1 * X
Next
If Y < 0 Then Pow1 = 1 / Pow1
End Property
' 二分法,复杂度:O(logN)
Public Property Get Pow2(ByVal X As Double, ByVal Y As Long) As Double
Dim I&: I = Abs(Y)
Select Case I
Case 0
Pow2 = 1
Exit Property
Case 1
Pow2 = X
Case Else
Pow2 = Pow2(X, I \ 2)
Pow2 = Pow2 * Pow2
If Y And 1 Then Pow2 = Pow2 * X
End Select
If Y < 0 Then Pow2 = 1 / Pow2
End Property
' 指数对数公式法,复杂度:O1
Public Property Get Pow3(ByVal X As Double, ByVal Y As Long) As Double
Pow3 = Exp(Log(X) * Y)
End Property


  • 风吹过b3
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
VB内部函数,都是经过优化的。
很多函数都是 C/C++ 写的,编译优化为最适合CPU指令的,甚至有大量扩展指令。针对X86指令系统优化最好的还是 inter 的编译器,也都是C/C++ 的。
我们自己使用VB6再写的运算过程,使用VB6的编译器进行编译,优化方面和使用CPU扩展指令方面毫无胜算。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 21回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示