![]() |
1
6
使用某种字符串生成器而不是重复连接到“key”中,可以显著提高速度。 |
![]() |
2
6
您可能需要提前为您的应用程序保留内存
|
![]() |
3
5
我同意罗伯·沃克的观点——你把注意力集中在了错误的领域。绳子是最慢的部分。 我对代码进行了计时(顺便说一句,您的原始代码已损坏),您的原始代码(修复时)为44982140个周期,用于100000次查找,下面的代码约为13113670。
|
![]() |
4
2
注意:您的问题表明您正在转换为base-62,但代码似乎有63个符号。你想做什么?
编辑:这是我突然想到的。它还允许您指定任何所需的基准:
|
![]() |
5
1
您不需要将输入复制到num中,因为您通过值传递它。您还可以在compiletime中计算字符集的长度,无需每次调用函数时都在运行时进行计算。
如果您将目标字符串作为参考参数,或者甚至像标准算法那样使用两个迭代器,则可以使事情更加高效。但可以说,这一步走得太远了。 顺便问一下,如果传入的输入值为零会怎么样?你甚至不会进入循环;那么键不应该是“0”吗? 我看到为输入传入的值不能是负数,但我们注意到:C余数运算符不是模运算符。 |
![]() |
6
1
为什么不直接使用base64库呢?63等于'11'而不是更长的字符串真的很重要吗?
当然,我真正的问题是,为什么要转换固定宽度的8字节值,而不直接将其用作“键”,而不是可变长度的字符串值? 注:我很清楚这方面的endian问题。他没有说密钥将用于什么,所以我假设它没有被用于具有不同端点的机器之间的网络通信。 |
![]() |
7
1
如果您可以再添加两个符号,使其转换为base-64,则模数和除法运算将变成位掩码和移位。比除法快得多。 |
![]() |
8
1
如果您只需要一个短字符串键,那么转换为base-64数字将大大加快速度,因为div/mod 64非常便宜(shift/mask)。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |