gpt4 book ai didi

c++ - 使用位操作影响内存消耗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:02 26 4
gpt4 key购买 nike

<分区>

我正在做一个生物信息学的大学项目,遇到了一个我不明白的非常奇怪的情况。

为了优化计算生物序列中子序列哈希值的函数的 CPU 性能,我替换了以下内容:

hashValue += powf(4.0, k-i-1) * PHI_function((*seqence)[startIndex + i]);
//top of file has #include<cmath>

与:

hashValue +=  (0x1 << (2*(k-i-1))) * PHI_function((*seqence)[startIndex + i]);
//top of file does not have #include<cmath> since powf is not used

变量解释:

//k is the sub-sequence length
//i is a index going from 0 to k
//sequence -> pointer to bio-sequence string
//hashValue is of type int
//
//PHI_function has the following signature: inline int HashTableCalculationMethod::PHI_function(char b)
// and only conatins: return (b & 0x6) >> 1;
//which means
// if (b == 'A') {
// return 0;
// } else if (b == 'C') {
// return 1;
// } else if (b == 'G') {
// return 2;
// } else if (b == 'T') {
// return 3;
// }

这将程序时间性能提高了约 5 倍,但出于某种原因,内存消耗也从约 4GB 增加到约 7.5GB(在我收到的项目样本上运行时)。

我确信这是因为 Git 版本跟踪而影响内存消耗的更改(我在修改前后都有提交)。

有人能解释一下这对程序内存消耗有何影响吗?

项目可在 link 获得.更改性能的提交是 d39d055

提前致谢。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com