加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中执行base36算法的最佳方法是什么?

发布时间:2020-12-15 21:58:08 所属栏目:大数据 来源:网络整理
导读:在Perl中执行base36算法的最佳方法是什么? 更具体地说,我需要能够做到以下几点: 在基数为36的正N位数字上运算(例如数字为0-9 A-Z) N是有限的,比如说9 提供基本算术,至少以下3: 加法(A B) 减法(A-B) 整体划分,例如地板(A / B). 严格来说,我真的不需要base1
在Perl中执行base36算法的最佳方法是什么?

更具体地说,我需要能够做到以下几点:

>在基数为36的正N位数字上运算(例如数字为0-9 A-Z)

N是有限的,比如说9
>提供基本算术,至少以下3:

>加法(A B)
>减法(A-B)
>整体划分,例如地板(A / B).
>严格来说,我真的不需要base10转换能力 – 数字将100%的时间都在base36中.所以我很好,如果解决方案没有实现从base36转换回base10,反之亦然.

我不太关心解决方案是否是暴力“转换为基础10并返回”或转换为二进制,或者一些更优雅的方法“本地”执行baseN操作(如上所述,往返于base10转换不是需求).我唯一的三个注意事项是:

>符合上述最低规格
>这是“标准”.目前我们正在使用基于base10转换的老本土模块,这种模块是手动完成的,这种模块很糟糕,很糟糕.

我宁愿用一些常用的CPAN解决方案取而代之,而不是从头开始重新编写自己的自行车,但如果不存在更好的标准可能性,我完全有能力构建它.
>它必须是快速的(虽然不是闪电般快).需要1秒才能总结2个9位数的base36数字的东西比我自己可以滚动的任何东西都差:)

附:只是提供一些上下文,以防人们决定解决我的XY问题,除了回答上面的技术问题:)

我们有一个相当大的树(作为一堆边存储在DB中),我们需要在该树的子集上叠加顺序.树的尺寸在深度和宽度方面都很大.树非常积极地更新(插入和删除以及分支移动).

这是通过具有3列的第二个表来完成的:parent_vertex,child_vertex,local_order,其中local_order是由A-Z0-9构建的9个字符的字符串(例如,基数36的数字).

其他考虑因素

>要求每个孩子的本地订单是唯一的(并且每个父母显然是唯一的),
>父母的任何完整的重新排序都有点贵,因此实现是尝试为具有X子的父级分配 – 在0到36 ** 10-1之间有点均匀分布的顺序,这样几乎没有树插入导致完全重新排序.

解决方法

Math::Base36怎么样?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读