递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
楼主: 呵呵仙8
打印 上一主题 下一主题

[视窗] 火山-交换变量()执行速度可否再加速?

[复制链接]

22

主题

286

帖子

2001

积分

金牌会员

Rank: 6Rank: 6

积分
2001
QQ
21#
发表于 2023-8-5 13:39:43 | 只看该作者
本帖最后由 793359277 于 2023-8-5 20:36 编辑
qaz2428119 发表于 2023-8-5 11:07
火山的文本是一个类,非直接数据指针,也就是文本数据指针是藏在类里的,好像没提供接口可以直接改变这个指 ...

取文本指针()
置文本指针()
取变量地址(文本变量)  变量地址+变整数大小*7内的值 即为文本指针地址
回复

使用道具 举报

25

主题

497

帖子

1808

积分

金牌会员

Rank: 6Rank: 6

积分
1808
22#
发表于 2023-8-5 14:16:44 | 只看该作者
793359277 发表于 2023-8-5 13:39
取文本指针()
置文本指针()
取变量地址(文本变量)  变量地址+变整数大小*8内的值 即为文本指针地址

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

使用道具 举报

149

主题

941

帖子

3976

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3976
QQ
23#
发表于 2023-8-5 16:57:03 | 只看该作者
水常流 发表于 2023-8-5 11:11
还真有,还有比这更大的,比如双色球

绝对是写法有问题,没明白交换变量的真实用意和使用场景
全国江浙沪音视频通讯、视频会议互动
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
24#
发表于 2023-8-5 17:06:25 来自手机 | 只看该作者
793359277 发表于 2023-8-5 13:39
取文本指针()
置文本指针()
取变量地址(文本变量)  变量地址+变整数大小*8内的值 即为文本指针地址

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

使用道具 举报

22

主题

286

帖子

2001

积分

金牌会员

Rank: 6Rank: 6

积分
2001
QQ
25#
发表于 2023-8-5 20:12:57 | 只看该作者
本帖最后由 793359277 于 2023-8-5 21:24 编辑
Xelloss0618 发表于 2023-8-5 17:06
置文本指针会复制文本数据的,另外指针偏移取文本指针可能不准,因为文本型内部可能有一个字节集类 ...

piv线程池对象类创建大概率失败并且会伴随崩溃,很奇怪,啥时候修复一下,利快云有私信
回复

使用道具 举报

22

主题

286

帖子

2001

积分

金牌会员

Rank: 6Rank: 6

积分
2001
QQ
26#
发表于 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)



QQ截图20230805202406.jpg (85.47 KB, 下载次数: 21)

QQ截图20230805202406.jpg

QQ截图20230805202232.jpg (78.68 KB, 下载次数: 18)

QQ截图20230805202232.jpg
回复

使用道具 举报

50

主题

567

帖子

2473

积分

金牌会员

Rank: 6Rank: 6

积分
2473
27#
 楼主| 发表于 2023-8-5 20:39:20 | 只看该作者
朕的 发表于 2023-8-5 16:57
绝对是写法有问题,没明白交换变量的真实用意和使用场景

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

使用道具 举报

22

主题

286

帖子

2001

积分

金牌会员

Rank: 6Rank: 6

积分
2001
QQ
28#
发表于 2023-8-5 22:02:27 | 只看该作者
qaz2428119 发表于 2023-8-5 14:16
还真没研究这些,你说的如果是真,那表面你认真研究了


回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
29#
发表于 2023-8-5 22:45:29 | 只看该作者
793359277 发表于 2023-8-5 20:12
piv线程池对象类创建大概率失败并且会伴随崩溃,很奇怪,啥时候修复一下,利快云有私信 ...

把你的例子发给我看看
回复

使用道具 举报

18

主题

337

帖子

2921

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2921
30#
发表于 2023-8-5 23:01:40 来自手机 | 只看该作者
呵呵仙8 发表于 2023-8-5 20:39
真实用意和使用场景,就是要快.快速的交换堆栈指针.无需用三个变量去多次申请堆栈,复制字节集,释放堆栈!! ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 06:25 , Processed in 0.100931 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表