递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 4245|回复: 17
打印 上一主题 下一主题

[视窗] 发现文本到长整数 ()和文本到整数 ()有趣的问题

[复制链接]

50

主题

567

帖子

2473

积分

金牌会员

Rank: 6Rank: 6

积分
2473
跳转到指定楼层
楼主
发表于 2023-10-29 22:46:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

大家有没发现,文本到长整数 ()比文本到整数 ()执行效率还要高!!
以计次循环 (100000000)为例.转化为整数花费时间2700毫秒左右!
而转化为长整数花费时间0毫秒!(编译为发布版速度)目测,最少3000倍效率!这个StrToN64函数是吴总自创的算法吗?_ttoi函数也是自创的吗?当初为何不用StrToN64函数的返回值强转为int返回为整数.文本到整数 ()不就速度飞起来了?省时省脑!如下图:

回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
沙发
发表于 2023-10-29 23:45:23 | 只看该作者
你的测试代码有问题吧,单单计次循环那么多次就不可能是 0 毫秒,C++ 的编译优化会将你的无效代码删除掉。
使用 #pragma optimize( "", off) 禁用编译优化后,实际性能差距应该是 5 倍左右。

_ttoi 是 C 的函数,速度已经算好了,C++11 的 std::stoi 更是慢得出奇。

长整数不能无脑强制转换成 32 位整数,因为转换的原则是直接砍掉后面 4 个字节。
比如长整数值 5000000000 (0x00F2052A01000000),强转到整数后是 705032704 (0x00F2052A)。
回复

使用道具 举报

37

主题

585

帖子

2857

积分

金牌会员

Rank: 6Rank: 6

积分
2857
板凳
发表于 2023-10-30 09:02:43 | 只看该作者
大佬厉害
回复

使用道具 举报

54

主题

396

帖子

2612

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
2612
地板
发表于 2023-10-30 09:07:49 | 只看该作者
这么细节的地方都被你发现了
长期从事编程教学课程研发,联系QQ:332690958
回复

使用道具 举报

47

主题

530

帖子

2933

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2933
5#
发表于 2023-10-30 09:14:10 | 只看该作者
占用时间应该是那个强转INT带来的
回复

使用道具 举报

0

主题

34

帖子

793

积分

高级会员

Rank: 4

积分
793
6#
发表于 2023-10-30 09:42:43 | 只看该作者
这么细节的地方都被你发现了
回复

使用道具 举报

24

主题

280

帖子

2831

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2831
7#
发表于 2023-10-30 10:02:43 | 只看该作者
666
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
8#
发表于 2023-10-30 11:35:58 | 只看该作者
昨天发的回复还没放出来,这里简单给个结论,你的测试代码没考虑编译优化,实际性能差距是5倍左右
回复

使用道具 举报

47

主题

530

帖子

2933

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2933
9#
发表于 2023-10-30 11:42:40 | 只看该作者
X大佬出结果就定案了,强转要占时间,不过相差几十倍,是不大可能
回复

使用道具 举报

50

主题

567

帖子

2473

积分

金牌会员

Rank: 6Rank: 6

积分
2473
10#
 楼主| 发表于 2023-10-30 12:19:03 | 只看该作者
suyan 发表于 2023-10-30 09:14
占用时间应该是那个强转INT带来的

会错意了.后图是个人建议"文本到整数()"源码变更为这样.速度才和"文本到长整数()"一样快!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 04:31 , Processed in 0.097609 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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