觅风论坛
标题:
更快获取文本长度的方法
[打印本页]
作者:
undefined
时间:
2021-6-19 22:22
标题:
更快获取文本长度的方法
先吐槽一下,易语言的文本型数据结构也是够了,居然不记录文本的长度信息
标准库的取本文长度,相当于每次调用strlen... o(n)的复杂度。。卧槽。。这也太。。。
这里的思路很简单,首先易语言的文本型是一个4位的栈空间,内部指向一个char* 或 const char* 的结构
然后 xxx = "xxx" 类似C/C++ const char* 在全局区
xxx = 到文本/取空白文本... 这样的应该是LocalAlloc分配的动态内存
如果是第一种情况,不像C/C++ 没有sizeof的计算不出静态区大小 (或许有办法。。反正我没找到 。。。)
第二种情况 直接调LocalSize就行了
代码如下:
.版本 2
.子程序 string_spaceLength, 整数型, 公开
.参数 szText, 文本型
.局部变量 pszText, 整数型
.局部变量 nLength, 整数型
pszText = ptr_get_inner (szText) '可以用取变量数据地址代替。。
nLength = LocalSize (pszText)
.如果真 (nLength ≤ 0)
nLength = 取文本长度 (szText) + 1 '目前没找到更好的部分。。。。可能是static const char*的结构
???
,反汇编的情况是直接MOV 到一个寄存器里面,就酱吧
.如果真结束
返回 (nLength)
欢迎光临 觅风论坛 (https://www.eyyba.com/)
Powered by Discuz! X3.4