这是个极富挑战的课题,请高手们给个速度最快的算法或做一张表。

cxz1992 2002-05-10 09:24:50
已知:时间n,两个数值x1,x2的差z,z=x1-x2(当x1>x2)或z=x2-x1(当x1<x2)
n为1--2700的值,z为0--255的值,
如果z>=n ,求y=z/n (n=1,2,3,.....n,求出的是每经过一秒钟,均匀变化的轨迹,输出取整数,即n=1,y=y1
n=2,y=y2
.......
n=n,y=yn
y1,y2....yn为整数)
如果z<n ,求y=n/z (z=1,2,3,.....z,求出的是每变化1,所经过的时间,输出为整数 即z=1,y=Y1
z=2,y=Y2
.......
z=z,y=Yn
Y1,Y2,....Yn为整数)
请各位高手给个速度最快的算法,如果能用查表的方式,最好。可是简单制表,表的容量为255x2700,如何制作一张容量小于2K的表,请高手指教。
...全文
78 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-11-26
  • 打赏
  • 举报
回复
关于VB内嵌汇编:
http://www.hosp.ncku.edu.tw/~cww/html/q00536.html
http://email.hosp.ncku.edu.tw/~cww/html/q00527.html
http://email.hosp.ncku.edu.tw/~cww/html/q00528.html


== 公告 ============================================================
zyl910_Scale V1.1写出来了:
http://www.5ivb.net/zyl910/zyl910_Scale.zip

双线内插值的速度比1.0版快了83%(比内嵌汇编的快60%)
三次卷积法的速度比1.0版快了26%



讨论贴子:http://expert.csdn.net/Expert/topic/1183/1183347.xml?temp=.9188959
crystal_heart 2002-11-26
  • 打赏
  • 举报
回复
我觉得应该加入个汇编编译的模块,把一些简单的汇编指令编译成二进制字节,够用就好,不必最求很完美的那种。
三楼の郎 2002-07-08
  • 打赏
  • 举报
回复
pf的一塌糊涂
adv_21 2002-07-08
  • 打赏
  • 举报
回复
UP
jyu1221 2002-07-06
  • 打赏
  • 举报
回复
up
Jameszht 2002-05-13
  • 打赏
  • 举报
回复
不得不PF
有哥 2002-05-11
  • 打赏
  • 举报
回复
酷得害怕!!!
学习,学习,再学习....
jyu1221 2002-05-11
  • 打赏
  • 举报
回复
以上的代码使用的指令代码嵌入技术
searchcat 2002-05-11
  • 打赏
  • 举报
回复
猛人!
jyu1221 2002-05-11
  • 打赏
  • 举报
回复
'--以下代码为CASM.cls的源代码-------------------------
Private Declare Function CallByteCodeProc Lib "user32" Alias "CallWindowProcA" (ByVal lpFunc As Long, ByVal P1 As Long, ByVal P2 As Long, ByVal P3 As Long, ByVal P4 As Long) As Long

Private m_strCode As String
Private m_ByteCode() As Byte

Private Sub Class_Initialize()
m_strCode = ""
End Sub

Public Sub Add(ByVal s As String)
m_strCode = m_strCode & s
End Sub

Public Function CallAsm(Optional ByVal P1 As Long = 0, Optional ByVal P2 As Long = 0, Optional ByVal P3 As Long = 0, Optional ByVal P4 As Long = 0) As Long
Dim nLen As Long
m_strCode = Replace(m_strCode, " ", "")
nLen = Len(m_strCode) / 2
ReDim m_ByteCode(0 To nLen - 1)
For i = 0 To nLen - 1
m_ByteCode(i) = Val("&H" & Mid(m_strCode, i * 2 + 1, 2))
Next


Dim pfnAddress As Long
pfnAddress = VarPtr(m_ByteCode(0))
CallAsm = CallByteCodeProc(pfnAddress, P1, P2, P3, P4)
End Function

Public Sub ReInit()
m_strCode = ""
End Sub



'--------以下代码为测试代码,可以放入test.BAS模块文件中------------
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Sub MakeResult(ByVal nBig As Long, ByVal nSmall As Long, pBuff As Long)
Dim asm As New CASM
asm.Add "55" 'push ebp
asm.Add "8B EC" 'mov ebp,esp
asm.Add "53" 'push ebx ;
asm.Add "56" 'push esi ;
asm.Add "57" 'push edi ;
'---------------------------;
asm.Add "B9 00 00 00 00" ' mov ecx,0
asm.Add "8B 7D 10" ' mov edi,dword ptr [ebp+10h]
asm.Add "41" 'jlll: inc ecx
asm.Add "8B 45 08" ' mov eax,dword ptr [ebp+8]
asm.Add "99" ' cdq
asm.Add "F7 F9" ' idiv eax,ecx
asm.Add "89 07" ' mov dword ptr [edi],eax
asm.Add "83 C7 04" ' add edi,4
asm.Add "3B 4D 0C" ' cmp ecx,dword ptr [ebp+0Ch]
asm.Add "7C EF" ' jl jlll
'----------------------------
asm.Add "5F" 'pop edi ; Recover register values
asm.Add "5E" 'pop esi
asm.Add "5B" 'pop ebx
asm.Add "8B E5" 'mov esp,ebp
asm.Add "5D" 'pop ebp
asm.Add "C2 10 00" 'ret 16
asm.CallAsm nBig, nSmall, pBuff
End Sub


Sub Main()

Dim b() As Long
Dim z As Long
Dim n As Long


'假设
z = 1249
n = 44



Dim nBig As Long
Dim nSmall As Long
Dim pBuff As Long

If z >= n Then
nBig = z
nSmall = n
Else
nBig = n
nSmall = z
End If

'计算结果放在b数组中
ReDim b(0 To nSmall - 1)
pBuff = VarPtr(b(0))

MakeResult z, n, pBuff




'debug ouput
Dim i As Long
For i = 0 To nSmall - 1
Debug.Print b(i)
Next

End Sub

'------------以上代码经过测试,速度绝对一流!!!!!!!!!!-----

wgku 2002-05-10
  • 打赏
  • 举报
回复
哇。。。楼上的,那么强啊??那你能不能连汇编指令怎么嵌入在VB代码中也给个示例?????谢了:)
jyu1221 2002-05-10
  • 打赏
  • 举报
回复
你先使用VB编一个,然后我给你优化一下,把它变成汇编指令嵌入在VB代码中,
速度保证够快!!!!!!
jyu1221 2002-05-10
  • 打赏
  • 举报
回复
可以在VB中嵌入汇编指令
cxz1992 2002-05-10
  • 打赏
  • 举报
回复
to wgku(云霄) :做一个控制器
wgku 2002-05-10
  • 打赏
  • 举报
回复
??? 这个是做什么用的??能不能先说一下????
cxz1992 2002-05-10
  • 打赏
  • 举报
回复
现在有高手在线吗?

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧