C++ 如何重新计算部分函数

C++ 如何重新计算部分函数,c++,algorithm,C++,Algorithm,我需要对计算进行数百万次/数十亿次的迭代。 为简单起见,要求解的函数为: x=(y*z/m)^n 用户在运行时指定4个变量y、z、m和n中的任意3个。 第四个变量在代码中的其他地方求解,并更改每次迭代 < C++ >有没有一种方法在初始化过程中预先计算已知变量,只迭代方程的简化形式? 我基本上是在寻找类似于模板元编程编译时常量的东西,除了在运行时而不是编译时。简短的回答是肯定的: 制作一个由四个不同对象实现的接口,每个对象对应一个可能的简化。初始化时,根据给定的常量构造相关的实现类,并使其成为单

我需要对计算进行数百万次/数十亿次的迭代。
为简单起见,要求解的函数为:

x=(y*z/m)^n

用户在运行时指定4个变量y、z、m和n中的任意3个。 第四个变量在代码中的其他地方求解,并更改每次迭代

< C++ >有没有一种方法在初始化过程中预先计算已知变量,只迭代方程的简化形式?


我基本上是在寻找类似于模板元编程编译时常量的东西,除了在运行时而不是编译时。

简短的回答是肯定的:

制作一个由四个不同对象实现的接口,每个对象对应一个可能的简化。初始化时,根据给定的常量构造相关的实现类,并使其成为单例对象。然后可以重复调用reduced函数

=========


话虽如此,没有必要尝试这种微优化,除非您已经分析过。如果你真的在3/4参数相同的情况下调用一个函数数百万次,那么编译器很可能已经非常有效地优化了它。始终测试新的“聪明”解决方案是否真的更快。几乎没有什么保证

编辑:clarityVincent的第3页,共4页-我真的不确定如何处理这一问题,欢迎您提供见解。目前,用户为每次运行重新编译代码,常量是从模板中预先计算出来的。编辑:问题是我不知道哪些变量是常量。请参阅添加的“任意3/4”Galik-库如何实现此功能?函数本身是否在每次重新编译时发生更改?