793359277 发表于 2023-8-5 13:39:43

本帖最后由 793359277 于 2023-8-5 20:36 编辑

qaz2428119 发表于 2023-8-5 11:07
火山的文本是一个类,非直接数据指针,也就是文本数据指针是藏在类里的,好像没提供接口可以直接改变这个指 ...
取文本指针()
置文本指针()
取变量地址(文本变量)变量地址+变整数大小*7内的值 即为文本指针地址

qaz2428119 发表于 2023-8-5 14:16:44

793359277 发表于 2023-8-5 13:39
取文本指针()
置文本指针()
取变量地址(文本变量)变量地址+变整数大小*8内的值 即为文本指针地址


还真没研究这些,你说的如果是真,那表面你认真研究了

朕的 发表于 2023-8-5 16:57:03

水常流 发表于 2023-8-5 11:11
还真有,还有比这更大的,比如双色球

绝对是写法有问题,没明白交换变量的真实用意和使用场景

Xelloss0618 发表于 2023-8-5 17:06:25

793359277 发表于 2023-8-5 13:39
取文本指针()
置文本指针()
取变量地址(文本变量)变量地址+变整数大小*8内的值 即为文本指针地址


置文本指针会复制文本数据的,另外指针偏移取文本指针可能不准,因为文本型内部可能有一个字节集类

793359277 发表于 2023-8-5 20:12:57

本帖最后由 793359277 于 2023-8-5 21:24 编辑

Xelloss0618 发表于 2023-8-5 17:06
置文本指针会复制文本数据的,另外指针偏移取文本指针可能不准,因为文本型内部可能有一个字节集类 ...
piv线程池对象类创建大概率失败并且会伴随崩溃,很奇怪,啥时候修复一下,利快云有私信

793359277 发表于 2023-8-5 20:36:36

本帖最后由 793359277 于 2023-8-5 21:44 编辑

qaz2428119 发表于 2023-8-5 14:16
还真没研究这些,你说的如果是真,那表面你认真研究了
这里可以看出文本型在内存中是占了11*变整数大小的长度的 比如这个64位程序,调试输出 (取数据类型尺寸 (文本型)),会返回88 (11*8),那文本指针在变量地址+7*8处,取文本指针取的就是这个地方的值 (之前打错了打成*8),并且9*8处是文本长度(这里尾部额外带2个0),字节集类的长度的是7*8 ,+3*8处是字节集指针,+5*8是字节集长度(尾部多一个0)



呵呵仙8 发表于 2023-8-5 20:39:20

朕的 发表于 2023-8-5 16:57
绝对是写法有问题,没明白交换变量的真实用意和使用场景

真实用意和使用场景,就是要快.快速的交换堆栈指针.无需用三个变量去多次申请堆栈,复制字节集,释放堆栈!!直接就两个变量的堆栈指针交换!交换指针,多数用于数据排序算法!EXE和DLL传参交互,等!所以,能提升0.001秒那是质的飞越!

793359277 发表于 2023-8-5 22:02:27

qaz2428119 发表于 2023-8-5 14:16
还真没研究这些,你说的如果是真,那表面你认真研究了


Xelloss0618 发表于 2023-8-5 22:45:29

793359277 发表于 2023-8-5 20:12
piv线程池对象类创建大概率失败并且会伴随崩溃,很奇怪,啥时候修复一下,利快云有私信 ...

把你的例子发给我看看

weilai 发表于 2023-8-5 23:01:40

呵呵仙8 发表于 2023-8-5 20:39
真实用意和使用场景,就是要快.快速的交换堆栈指针.无需用三个变量去多次申请堆栈,复制字节集,释放堆栈!! ...

这个是不可能实现的,要知道火山pc是c++,而c是速度最快的,想要排序交换变量(文本等对象类型的直接取数据指针就行),然后相当于就是直接操作整数或长整数,速度肯定是无与伦比的,交换变量不想用3个变量直接位运算异或就行 ,再加上c++编译器强大的优化能力,保证会比易语言快的多。所以完全不用纠结这个交换变量速度的快慢,这个完全就是可有可无的一个命令
页: 1 2 [3] 4
查看完整版本: 火山-交换变量()执行速度可否再加速?