我在C++中使用基于日志的类来存储非常小的浮点值(因为这些值超出了范围double).由于我正在执行大量乘法运算,因此将乘法转换为和会带来额外的好处.
但是,在我的算法中的某个点,我需要将一个标准double值除以一个integer值,而不是一个*=基于日志的值.我已经*=为基于日志的类重载了运算符,并且右侧值首先通过运行转换为基于日志的值,log()然后添加到左侧值.因此,实际执行的操作是浮点除法log()和浮点求和.
我的问题是,首先将分母转换为基于对数的值会更快,这将用浮点减法替换浮点除法,产生以下操作链:两次log(),浮点减法,浮点数总和.
最后,这归结为浮点除法是快还是慢log().我怀疑一个常见的答案是这是依赖编译器和体系结构的,所以我会说我在darwin 10.3.0上使用Apple的gcc 4.2.不过,我希望得到一个关于这两个运算符的速度的一般性评论的答案和/或关于如何自己衡量差异的想法,因为这里可能会有更多,例如执行进行类型转换的构造函数等等
干杯!
我以为我理解MacOSX如何管理内存,但最近我对它的性能感到困惑.情况如下:
任何人都可以给我一个线索,为什么MacOSX不会为需要它的进程释放非活动内存,而是采用分页?另外,有没有适当的方法来影响系统的内存管理?
我唯一想到的是32位内核可能是限制因素,尽管我不确定原因.我知道您可以使用64位内核启动MacOSX,但之后我将无法加载许多32位应用程序,因此这对我来说不是一个选项.