8得票2回答
代码对齐方式会极大地影响性能。

今天,我发现一个示例代码在添加了一些无关代码后变慢了50%。通过调试,我发现问题出在循环对齐上。 根据循环代码的放置位置,执行时间有所不同,例如: 地址 时间[us] 00007FF780A01270 980微秒 00007FF7750B1280 1500微秒 00...

17得票5回答
Java - 在for循环中声明变量

在循环内部声明变量是不良实践吗?我认为像下面第一个代码块中所示这样做会使用十倍的内存,因为每次循环迭代都会创建一个新字符串。这是正确的吗?for (int i = 0; i < 10; i++) { String str = "Some string"; } 对比。String st...

18得票4回答
在函数调用过程中,是否实际传递了一个未命名的参数?

template <typename TAG> fn(int left, TAG, int right) { } fn(0, some_type_tag(), 1); /* or */ fn(0,int(), 1); // where the primitive, int, is...

26得票3回答
为什么在x86上代码应该对齐到偶地址边界?

我正在学习Kip Irvine的"Assembly Language for x86 Processors, sixth edition",并且非常喜欢它。 我刚刚在下面的段落中读到了NOP助记符: 有时编译器和汇编程序员使用它[NOP]将代码对齐到偶数地址边界。 给出...

34得票3回答
执行uop数量不是处理器宽度的倍数的循环会降低性能吗?

我想知道在最近的x86处理器上,各种大小的循环在uop数量的函数下的表现如何。以下是Peter Cordes在另一个问题中提出非4的倍数计数问题的引用: “如果循环不是4个uop的倍数(即为abc, abc, ...而不是abca, bcab, ...),那么从循环缓冲区输出的uop带宽不是...

8得票5回答
遍历ArrayList反向的最快最有效的方法是什么?

在使用 ListIterator 之外,是否有更快,更有效的方法来做到这一点? ListIterator<Integer> itr = list.listIterator(list.size()); while(itr.hasPrevious()){ System.out...

8得票9回答
为什么无法将寄存器变量声明为全局变量?

阅读网站时,我发现您不能创建一个类型为register的全局变量。为什么会这样呢? 来源: http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/languag...

106得票7回答
浮点数除法与浮点数乘法

编码时是否有任何(非微观优化)性能提升?float f1 = 200f / 2 相比之下float f2 = 200f * 0.5 我的一位教授几年前告诉我,浮点数除法比浮点数乘法慢,但没有解释为什么。 在现代PC架构中,这种说法是否成立? 更新1 针对评论,请也考虑以下情况:float...

10得票3回答
线程在同步中所消耗的时间过高吗?

今天我使用Visual Studio 2010性能分析器对我的C#应用程序进行了分析。具体来说,我正在针对"并发性"进行分析,因为似乎我的应用程序应该具有比它展示的更多容量。分析报告显示线程大约花费了70-80%的时间处于同步状态。 说实话,我不确定这是什么意思。这是否意味着应用程序正在遭受...

20得票8回答
在C++中有非常快的近似对数(自然对数)函数吗?

我们可以找到各种技巧来替换std::sqrt(计时平方根),以及一些用于std::exp的技巧(使用更快的指数近似),但我没有找到任何可以替换std::log的技巧。 它是我的程序中循环的一部分,并且被多次调用,而且虽然exp和sqrt已经被优化了,但Intel VTune现在建议我优化st...