micro-optimization 相关问题

微优化是对小部分代码进行细致调整的过程,以解决其操作的某些方面(内存使用过多,性能不佳等)的感知缺陷。

movsbl接近ret是否有利于性能?

char c; int f(){return c ^ 1; } gcc将其编译为类似movzbl c(%rip),%eax xorl $ 1,%eax movsbl%al,%eax ret因为某些乱序或超标量而有用...

回答 1 投票 1

两个补码的长整数

我想用英特尔I64汇编程序做一些长整数数学运算(128位),需要创建一个2的补码。让我们说我的正面价值在于RDX:RAX。 2的补充是通过“翻转位...

回答 2 投票 7

为什么`arr.take(idx)`比`arr [idx]`更快

似乎有一个共同的观点,即使用np.take比数组索引要快得多。例如http://wesmckinney.com/blog/numpy-indexing-peculiarities/,Fast numpy花式索引,以及......

回答 1 投票 10

'...!= null'或'null!= ...'最佳表现?

我写了两个方法来检查性能公共类Test1 {private String value; public void notNull(){if(value!= null){// do something}} public void nullNot(){if(null ...

回答 16 投票 40

霓虹64位无效:将向量与零进行比较

我想比较霓虹64位中矢量的所有16个元素,如果所有都等于零,则有一个分支。现在,我有:uaddlv h1,v0.16b umov w0,v1.s [0] cmp w0,#0 beq .exit我也试过:...

回答 1 投票 2

哪个英特尔微体系结构引入了ADC reg,0单Uop特殊情况?

Haswell及更早版本的ADC通常为2 uops,有2个周期延迟,因为Intel uops传统上只能有2个输入(https://agner.org/optimize/)。 Broadwell / Skylake和后来有单...

回答 2 投票 6

如何减少因子循环的执行时间和周期数?和/或代码大小?

基本上我很难让执行时间低于它,以及减少时钟周期和内存大小。有谁知道如何做到这一点? ......

回答 4 投票 2

对于Cortex-M3,如何优化块复制和右移+饱和到max = 5

基本上,我需要通过减少整体代码的大小来减少内存大小或使其运行更有效,从而提高这段代码的效率。我也在使用Thumb 2 ......

回答 1 投票 2

英特尔为指令添加前缀,检查优化问题

我想通过x86_64二进制文件,反汇编指令来了解有关ptrace函数的更多信息。目标是检查字节是否是指令前缀之一。我在英特尔®中找到了一些信息......

回答 1 投票 2

是否有任何内置函数告诉编译器分支是否可预测?

我不是在问__builtin_expect这样的事情。我想的是我不知道分支通常是真的或通常是假的,但我确实知道它是可预测的(或不是)。一世 ...

回答 1 投票 3

如何在没有隐式锁定最新的64位Intel CPU的情况下用寄存器交换堆栈顶部?

X64调用约定使用最多4个参数(rcx,rdx,r8,r9)的寄存器,并在堆栈上传递其余参数。在这种情况下,处理补充的明显方式......

回答 2 投票 0

L1缓存命中的周期/成本与x86上的Register相比?

我记得在我的架构类中假设L1缓存命中是1个周期(即与寄存器访问时间相同),但在现代x86处理器上实际上是这样吗? L1有多少个周期......

回答 4 投票 26

当base + offset与基数不同时,是否存在惩罚?

这三个片段的执行时间:pageboundary:dq(pageboundary + 8)... mov rdx,[rel pageboundary] .loop:mov rdx,[rdx - 8] sub ecx,1 jnz .loop这个:...

回答 2 投票 10

将bool从参数复制到全局 - 比较编译器输出

完全知道这些完全人为的基准测试并不重要,但我对“大4”编译器选择编写一个简单的片段的几种方式感到有点惊讶。结构在{...

回答 2 投票 13

汇编 - 如何通过延迟和吞吐量对CPU指令进行评分

我正在寻找一种公式/方法来衡量一条指令的速度,或者更具体地说是通过CPU周期给出每条指令的“得分”。让我们采取以下装配计划......

回答 1 投票 2

C ++中非常快速的近似Logarithm(自然日志)函数?

我们找到了替换std :: sqrt(Timing Square Root)和std :: exp(使用更快的指数逼近)的一些技巧,但我找不到替换std :: log的东西。它是我...中循环的一部分

回答 4 投票 6

如何:使用C ++内联汇编程序(在Visual Studio 2010下)

我正在编写一个性能关键,数字运算的C ++项目,其中70%的时间用于200线核心模块。我想使用内联汇编优化内核,但我完全是新的......

回答 6 投票 5

根据英特尔的说法,我的缓存应该是24路关联,虽然它的12路,这是怎么回事?

根据“Intel 64和IA-32架构优化参考手册”,2012年4月第2-23页LLC数据阵列中保存的数据的物理地址分布在缓存中...

回答 2 投票 3

确定寄存器的值是否等于零的最简单方法是什么?

我正在使用与Irvine库的x86程序集。检查寄存器值是否等于零的最简单方法是什么?我使用cmp指令,但我正在寻找替代方法。这是我的 ...

回答 3 投票 6

如何在C#中对单元测试性能优化进行单元测试?

我在我正在构建的一些搜索代码中使用了Levenshtein算法的优化版本。我有功能单元测试来验证算法返回正确的结果,但在这...

回答 1 投票 23

© www.soinside.com 2019 - 2024. All rights reserved.