|
按照易语言知识库的说法,“字节集是可变长的字节数组。另外,与文本数据一样,多个字节集之间也可以使用相加命令连接为一个字节集。”虽然字节集的这种特性给我们编程时带时了许多方便,但这是以牺牲性能为前提的。我在我的PII450机子上测试,执行600次2400字节的字节集相加操作竟然用了5秒多钟,不可思议。也许你会说,可以用就行了,何必管它那么多。对于我这种追求速度的人来说,这是绝对不允许的。于是我就对字节集进行了一番研究,我发现:
易语言的字节集与VB有点相似,它在容器内存地址前四个字节位置定义了一个整数型容器,用以存储这个字节集的长度,改变这个地址的值就能改变字节集的长度。在需要进行大量字节集相加操作的时候,先定义一足够大的字节集,然后依次用api函数把要连接的字节集按顺序复制到这个字节集容器里,然后再修改字节集长度值,就相当于进行了字节集的相加。用这样的方法,进行前面的测试用时不到0.01秒。
复制内存的api函数是:
Dll命令:CopyMemory
Dll库文件名:kernel32.dll
在Dll库中的命令名:RtlMoveMemory
参数:目标地址 数据类型:整数型
参数:源地址 数据类型:整数型
参数:字节长度 数据类型:整数型
我自己做了一个修改字节集长度的子程序:
子程序:重定义字节集长度
参数:字节集地址 数据类型:整数型
参数:重定义长度 数据类型:整数型
CopyMemory (字节集地址 - 4, 取地址 (重定义长度), 4)
以及一个进行相加操作的子程序:
子程序:替换子字节集
参数:目标字节集地址 数据类型:整数型
参数:源字节集地址 数据类型:整数型
参数:复制数据长度 数据类型:整数型
CopyMemory (目标字节集地址, 源字节集地址, 复制数据长度)
使用方法如:
替换子字节集 (取地址 (缓存2), 取地址 (缓存1), 取字节集长度 (缓存1))
重定义字节集长度 (取地址 (缓存2), 取字节集长度 (缓存1))
以上所云种种,各位有用就拿去,没用请捧捧场 。
上面转来的 我觉得 写软件的 高手们 不知道你们对 易语言 核心支持库里的 东西了解多少
我个人认为 我自己对核心支持库里的 好多东西都没有熟悉掌握
比如核心支持库里的 字节集操作 控制台操作 环境存储 对象 变体型 变体类型等等 基础 都不明白
要学习的路还是很长的
就精易模块里的 只取字母 只取汉字 等等 还是要有很多 我感觉对我来说 还是很有深度的
|
|