Mar*_*som 15
首先,通过该表达式预先计算1.0/log(a)并乘以每个log(b)表达式.
编辑:我原先说自然对数(基数e)会最快,但其他人说处理器直接支持基数2并且速度最快.我没有理由怀疑它.
编辑2:我原先认为这a是一个常数,但在重新阅读从未说过的问题.如果是这样,那么预先计算将没有任何好处.但是,如果是,您可以通过适当选择变量名来保持可读性:
const double base_a = 1.0 / log(a);
for (int b = 0; b < bazillions; ++b)
double result = log(b) * base_a;
Run Code Online (Sandbox Code Playgroud)
奇怪的是,微软没有提供基本2日志功能,这解释了为什么我不熟悉它.用于计算日志的x86指令包括自动乘法,并且通过优化指令也可以获得不同基数所需的常数,因此我希望3个不同的对数函数具有相同的时序(即使基数2也必须乘以1).
| 归档时间: |
|
| 查看次数: |
9431 次 |
| 最近记录: |