35得票4回答
在x86架构中,L1缓存命中与寄存器的循环/成本比是多少?

我记得在我的架构课上认为L1缓存命中时间是1个周期(即与寄存器访问时间相同),但在现代x86处理器上是否真的如此? L1缓存命中需要多少个时钟周期?它与寄存器访问相比如何?

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

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

33得票10回答
为什么n++比n=n+1执行更快?

在C语言中,为什么 n++ 的执行速度比 n=n+1 快?(int n=...; n++;) (int n=...; n=n+1;) 这是今天我们老师在课堂上提出的问题。(这不是作业)

33得票4回答
max(ctz(x), ctz(y)) 是否有更快的算法?

对于min(ctz(x), ctz(y)),我们可以使用ctz(x | y)来获得更好的性能。但是对于max(ctz(x), ctz(y))呢? ctz表示“计算末尾零位数”。 C++版本(Compiler Explorer) #include <algorithm> #in...

33得票7回答
"正确的"无符号整数比较

我们都知道C/C++有符号/无符号比较规则,其中-1>2u==true,我有一个情况需要实现有效的“正确”比较。 我的问题是,在考虑到人们熟悉的尽可能多的体系结构的情况下,哪种方法更有效率。显然,英特尔和ARM的权重更高。 已知:int x; unsigned int y; if (x ...

32得票2回答
为什么在代码中设置时区后,date()函数的速度会快两倍?

你有没有注意到,如果在脚本的任何 date() 调用之前设置实际时区, date() 函数会比平常快2倍?我对此非常好奇。 看看这个简单的代码:<?php $start = microtime(true); for ($i = 0; $i < 100000; $i++)...

32得票5回答
现代x86成本模型

我正在编写一个带有x86后端的JIT编译器,随着学习x86汇编语言和机器码的过程。大约20年前我使用过ARM汇编器,惊讶于这些体系结构之间成本模型的差异。 具体而言,访问内存和分支在ARM上很昂贵,但是对于x86架构来说,等效的堆栈操作和跳转则很便宜。我相信现代x86 CPU进行的动态优化远...

32得票2回答
将int和double之间转换的成本高吗?

我经常看到代码将整数转换为双精度浮点数,再将其转换回整数(有时出于良好的原因,有时不是),我突然想到这似乎是程序中的“隐藏”成本。假设转换方法是截断。 那么,它到底有多昂贵呢?我相信它取决于硬件,所以让我们假设一个较新的英特尔处理器(如果您喜欢Haswell,我会接受任何处理器)。一些我感兴...

31得票2回答
array_push()和$array[] = ....哪个更快?

我需要将从MySQL获取的值添加到数组中(PHP)。这是我的代码:$players = array(); while ($homePlayerRow = mysql_fetch_array($homePlayerResult)) { $players[] = $homePlayerR...

31得票5回答
Java:if-return-if-return与if-return-elseif-return

我问了一个无关的问题,其中有这样的代码:public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; ...