|
1
3
提取数字所需的时间将与动态分配数组所需的时间相减。考虑在结构中返回结果:
您需要为最大位数选择合适的值(
根据是否要处理负值,还必须决定如何报告一元减号(
|
|
|
2
3
除非你想用2的幂的基数表示数字,否则这是唯一的方法。 |
|
|
3
1
有点过早的优化。如果分析证明它是重要的,那么请确保将你的ALGO与ITOA进行比较。在内部,它可以使用一些CPU指令,这些指令没有从C++中显式访问,并且编译器的优化器可能不太聪明地使用(例如,AAM,它在保存mod结果时进行div)。自己对汇编程序进行实验(和基准测试)。您可能会四处寻找ITOA的组装实现(这与您所要求的不完全相同,但可能会建议使用最佳的CPU指令)。 |
|
4
1
通过“避免使用字符串”,我假设您这样做是因为如果您想要一个整数值,那么只使用字符串表示的效率非常低。 为此,我建议采取一种稍微非正统的方法 可以 要合适。不要以一种形式存储它们,将它们存储在 二者都 . 下面的代码是C-它将 工作 在C++中,但是你可能想考虑使用C++等价物——但是它背后的思想并没有改变。 通过“存储这两个表单”,我的意思是您可以具有如下结构:
并传递此结构(或其地址),而不是整数本身。 通过使用宏或内联函数,如:
然后,要设置该值,您将使用:
当你想要字符串表示的时候:
这有一个优点,即只在需要时计算字符串表示形式(即
从这个意义上说,如果您的代码配置文件是
当然,这是有代价的,只需要最少的额外存储空间,但大多数性能问题归结为空间/时间的权衡。 如果你 真的? 为了避免字符串,您仍然可以使用相同的方法(仅在需要时才计算),只是计算(和结构)会有所不同。 作为旁白: 您很可能希望使用库函数来完成这项工作,而不是手工编写自己的代码。库函数通常会进行大量的优化,可能比编译器从代码中获得的优化还要多(当然,这并不能保证)。
也可能是
|
|
|
5
1
使用“数字”也可以看到一个Base-100解决方案也可以工作,这是非常简单的。
|
|
|
6
1
是的,有一种更有效的方法,但不是便携式的。英特尔的FPU有一个特殊的BCD格式数字。所以,您所要做的只是调用相应的汇编程序指令,将ST(0)转换为BCD格式并将结果存储在内存中。指令名称为
|
|
|
7
0
从数学上讲,整数的小数位数是
您将不使用字符串,而是遍历浮点和日志函数。如果你的平台有任何类型的FP加速器(每台PC或类似的PC都有),那就不会有什么大不了的,并且会击败任何“基于sting的”算法(这不仅仅是一个迭代除以10和count)。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |