声明变量后,便开始对其进行操作。 我的问题是操纵的速度,即使它很重要。
假设您有一个变量total ,它是数组中所有值的总和。 您想要找到平均值,所以您将进行total / length 您声明新值的速度是否更快(即double avg = total / length ),还是“就地”完成所有操作( total \\= length )是否更快,因此,这当然会忽略total是a的事实。平均而言,变量名称不佳,但这只是为了使我明白

我怀疑处理器是需要从RAM复制数据来进行ALU中的计算,还是通过位移位来进行CPU中的硬连线计算,但是我不太确定C ++如何处理内存,并且我对此工作方式感到好奇在后端。

#1楼 票数:2

假设您的意思是total /= length ,那么您只会在重要的地方看到差异(即,当您实际上需要同时使用totalavg ,无论如何都不能使用第二个版本)。

我反对使用total /= length因为total成为平均值,并且在语义上不再正确。

#2楼 票数:2 已采纳

这取决于您使用平均值的频率。 如果只使用几次,则可以忽略不计,但是如果您需要平均使用数百或数千次,则使用变量可能会“更快”,因为您不必一直进行计算。 但是,今天的编译器在优化方面非常出色,因此实际上可能无关紧要。

唯一可以确定的是要对其进行测试,并进行一些性能分析和测量。 在考虑手动优化之前,您应该始终做一些事情(我怀疑计算平均值,甚至更复杂的事情会成为瓶颈。)

#3楼 票数:1

这取决于您打开优化后编译器的功能。

  ask by Prediluted translate from so

未解决问题?本站智能推荐:

3回复

为大型本地数据处理扩展堆栈的大小是一个好主意吗?

我的环境是gcc,C ++,Linux。 当我的应用程序进行一些数据计算时,它可能需要一个“大”(可能是几MB)的内存数来存储数据,计算结果和其他东西。 我使用了一些新的代码, 删除来完成这个。 由于在某些功能范围之外没有所有权,我认为所有这些内存都可以在堆栈中分配。 问题是,默认堆
2回复

C ++处理结构的原始数据

我有一个看起来像这样的简单结构: 我正在尝试操纵对象的原始数据,这就是我所做的: 我期望上面的代码可以工作, 真正的问题是什么? 这有可能吗?
2回复

用户提供的多余数据会如何处理?

在C ++中,如果输入过多,会发生什么? 它存储在某个地方还是被完全忽略了? 例如,此示例代码: 只需输入三个字母,我就可以输入任意数量的字母。 其余的都去哪里了? 最好无处...对吗?
2回复

高效的内存和处理多维数据结构C ++

在C ++中存储多维数据的最佳方法是什么? 我正在寻找一些动态数据结构,而不是静态多维数组,因为无法确定结构中要存储的元素数量。 此外,我正在寻找一种数据结构,可以最大程度地减少内存成本并提供更快的查找。 是否有现成的数据结构,或者我必须实现一些基于多维树的数据结构? 编辑:我必
1回复

如何在不复制数据的情况下逐行处理缓冲区中的数据?

我目前正在做这样的事情: my_func正在处理网络请求的输出,从而产生a_large_buffer 。 我检索的数据可能很大(多 GB)。 目前,代码通过将缓冲区中的数据复制到将存储在向量中的字符串来处理缓冲区中的数据。 复制过程会增加内存使用量。 我怎样才能避免这种不必要的副本? 替
3回复

C ++程序内存不足,无法处理大数据

我正在尝试解决我编写的C ++程序中的问题。 我基本上用光了内存。 该程序是一个缓存模拟器。 有一个文件具有预先收集的内存地址,如下所示: 线程地址类型大小指令指针 0 0x7fff60000000 1 8 0x7f058c482af3 这样的条目可能有100-5000亿。
1回复

循环处理和删除QThread

我有一个从QThread继承的类(简称为ClassA),该类在for循环中运行,如下所示: 问题在于classa包含大量内存,并且在循环仍在运行时似乎没有被破坏。 因此,程序将在内存建立后立即崩溃(例如内存泄漏)。 我也尝试使用“删除类”,这当然会使程序崩溃。 任何人都知道如何
5回复

处理内存池中的碎片?

假设我有一个带有构造函数的内存池对象,该构造函数获取指向大块内存ptr和大小为N的指针。如果我做了许多随机分配和各种大小的解除分配,我可以获得内存,使得我无法分配M字节对象在内存中连续存在,即使可能有很多空闲! 与此同时,我无法压缩内存,因为这会导致消费者的悬空指针。 在这种情况下如何解决碎