小编Ven*_*hev的帖子

如何比较C++中log()和fp除法的性能?

我在C++中使用基于日志的类来存储非常小的浮点值(因为这些值超出了范围double).由于我正在执行大量乘法运算,因此将乘法转换为和会带来额外的好处.

但是,在我的算法中的某个点,我需要将一个标准double值除以一个integer值,而不是一个*=基于日志的值.我已经*=为基于日志的类重载了运算符,并且右侧值首先通过运行转换为基于日志的值,log()然后添加到左侧值.因此,实际执行的操作是浮点除法log()和浮点求和.

我的问题是,首先将分母转换为基于对数的值会更快,这将用浮点减法替换浮点除法,产生以下操作链:两次log(),浮点减法,浮点数总和.

最后,这归结为浮点除法是快还是慢log().我怀疑一个常见的答案是这是依赖编译器和体系结构的,所以我会说我在darwin 10.3.0上使用Apple的gcc 4.2.不过,我希望得到一个关于这两个运算符的速度的一般性评论的答案和/或关于如何自己衡量差异的想法,因为这里可能会有更多,例如执行进行类型转换的构造函数等等

干杯!

c++ floating-point performance logarithm

13
推荐指数
2
解决办法
1万
查看次数

无法理解MacOSX中的非活动内存

我以为我理解MacOSX如何管理内存,但最近我对它的性能感到困惑.情况如下:

  1. 我有一个全新的Core i7系统,8GB的物理内存运行MacOSX 10.6.7.
  2. 有一些应用程序经常运行占用一些内存 - Safari,Mail,Xcode,终端等.
  3. 我需要并行运行三个64位进程,每个进程使用大约2000M的实内存.
  4. 虽然有线内存保持在1000M以下(即我有超过7000M可用于进程),但我看到大量的分页活动导致我启动的三个内存密集型进程的性能非常糟糕.
  5. 显然,我没有耗尽可用内存,因为报告的非活动内存大约保持在2500M,活动内存不会超过5000M.

任何人都可以给我一个线索,为什么MacOSX不会为需要它的进程释放非活动内存,而是采用分页?另外,有没有适当的方法来影响系统的内存管理?

我唯一想到的是32位内核可能是限制因素,尽管我不确定原因.我知道您可以使用64位内核启动MacOSX,但之后我将无法加载许多32位应用程序,因此这对我来说不是一个选项.

macos memory-management

9
推荐指数
1
解决办法
6317
查看次数