cost 340 ms
将 const bool 标志移动到构造函数会导致更好的编译器优化吗? - Could moving a const bool flag to the constructor cause better compiler optimization?

假设在DataProcessor的每个实例中,提供的do_something_special标志始终相同(即我们仅在特殊情况下通过单独的特殊实例传递 false)。 从性能的角度来看,将标志移动到构造函数并将其保存在const bool成员字段中是否更优化? 让我们忽略哪个更好 API,我只对编译 ...

解释这个 CPU Cache 处理器效果:操作次数呈指数下降,但平均时间没有 - Explain this CPU Cache processor effect: Number of operations decreased exponentially but average time does not

对于上下文,此问题与有关缓存处理器效果的博客文章相关,特别是示例 1-2。 在下面的代码片段中,我每次都将步长增加 2,即我执行的操作数每次都减少 2 倍。 从博文中,我希望看到步长为 1-16 时,完成循环的平均时间大致相同。 作者讨论的主要直觉是 1) 大部分时间是由 memory 访问(即我们 ...

我想获取Julia生成的ASM(Intel汇编)代码 - I want to obtain the ASM (Intel assembly) code generated by Julia

我在 Delphi 中编写了一个简单for循环,并将其翻译为 Julia。Delphi 程序的执行时间与 Julia 程序相比,令人遗憾:Julia 快了 7 倍 - 查看程序和结果。 我想弄清楚这是怎么可能的,因为 Delphi 应该是 pl.net 上最快的语言之一! 我想对比一下Julia生成 ...

重新排序数字代码以避免临时变量如何使代码更快? - How does reordering numerical code in order to avoid temporary variables make the code faster?

我的经验(这不是问题而是陈述)避免使用非常量局部变量而使用常量变量或根本避免使用局部变量,可以使 c++ 编译器生成更快的代码。 我假设,这使编译器可以更自由地交错计算表达式,而赋值会强制编译器插入同步点。 这个假设实际上是这样吗? 还有别的解释吗? 例如,一旦代码变得太复杂,编译器就放弃某些优化 ...

如果没有 -fwrapv,GCC 将不会使用自己的优化技巧 - GCC won't use its own optimization trick without -fwrapv

考虑这个 C++ 代码: 带有 -fwrapv 的-fwrapv正确地意识到从b中减去 1 可以消除特殊情况,并为 x86-64 生成以下代码: 但如果没有-fwrapv ,它会生成更糟糕的代码: 我知道如果我编写依赖于签名溢出的-fwrapv代码,则需要 -fwrapv。 但: 上面的 C++ 代 ...

numpy 比 Eigen C++ 更快更高效? - numpy is faster and more efficient than Eigen C++?

最近,我与一位同事就性能方面的比较 python 和 C++ 进行了辩论。 我们俩主要将这些语言用于线性代数。 所以我写了两个脚本,一个在python3中,使用numpy,另一个在C++中使用Eigen。 Python3 numpy 版本matmul_numpy.py: 如果我运行这个脚本 这将 ...

对于 gcc 编译器,gcc 在不使用任何标志与 -O2 进行编译时针对哪个 x86-64 指令集? - For gcc compiler, what x86-64 instruction set does gcc target when you compile without any flags versus -O2?

对于 x86-64,有很多指令集可以加速代码执行。 这是来自 gcc wiki https://gcc.gnu.org/wiki/FunctionMultiVersioning的列表: MMX 上交所 SSE2 上证3 SSSE3 SSE4.1 SSE4.2 流行音乐网络 AVX AVX ...

如何阻止 clang 通过模板过度扩展嵌套循环? - How to stop clang from overexpanding nested loops via templates?

考虑这段代码 在clang++ -O0中编译时,它会在几秒钟内编译,然后运行 4 秒。 但是用clang++ -O2 ,编译时间长,memory很多。 在godbolt上可以看到,把8改小一点,就充分展开了循环。 我不是让它完全没有优化,而是让它不递归,就像嵌套循环应该表现的那样。 有什么我应该做 ...

api 用于索引可变参数 arguments - api for indexed variadic arguments

我不知道在将类似元组的对象解包到可调用处理程序中时,即在使用std::apply时,是否有一种好的和干净的方法来索引可变参数 arguments 。 这是一个不完美但相当干净的解决方案: 此解决方案比使用std::index_sequence的重载更干净,因为您不必在 lambda 的 scope ...

是否有理由将间接跳转编译为两条指令而不是 ARM 上的一条指令? - Is there a reason for compiling an indirect jump as two instructions instead of one on ARM?

给定以下小程序: 我注意到每个 next# 语句都被编译为两条指令。 我原以为这只需要一条指令: 我在这里找到了讨论: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887 “问题在于指令“ldr pc,[r3,#0]”不被 Cortex-A8 的 ...

嵌套结构中 C/C++ 中的尾随填充 - 是否必要? - Trailing padding in C/C++ in nested structures - is it neccesary?

这更像是一个理论问题。 我熟悉填充和尾随填充的工作原理。 x之后需要填充,以便*p对齐,并且c之后需要尾随填充,以便整个结构大小可以被 8 整除(以获得正确的步长)。 但是考虑这个例子: 两种布局都满足所有变量的对齐。 两种布局都具有相同的变量顺序。 在这两种布局中, struct B都具有正确 ...

仅编译与主文件中使用的内容相关的方法以释放 RAM 和闪存 - only compile methods related to what is used in the main file to free RAM and flash

我正在图书馆工作以从电子计数器读取串行数据。 根据您的合同,计数器最多可以传输 105 个不同的标签。 因为这个库可能在轻量级而不是强大的嵌入式系统(通常是 arduino 或 esp8266)上,我想知道是否有可能让用户只询问他感兴趣的标签,这样库就不会编译不必要的变量声明和getter。 作为记 ...

使用有限的可用寄存器生成目标代码 - Target Code Generation using limited available registers

将以下代码翻译成机器代码,并在生成指令时显示寄存器和地址描述符。 (假设有两个寄存器可用:R0 和 R1。) 我试过这样的事情: -- R0 包含 D -- R1 包含 E 我不能从这里开始。 由于 B 在块中没有下一个用途(从第 3 行开始),下面的代码会怎样? ...

如何为 MSVC Visual Studio 指定目标 CPU/架构 Haswell? - How to specify target CPU/architecture Haswell for MSVC Visual Studio?

我有一个程序大量使用内部命令_BitScanForward / _BitScanForward64 (又名计数尾随零、TZCNT、CTZ)。 我不想使用内在函数,而是使用相应的 CPU 指令(在 Haswell 及更高版本上可用)。 当使用 gcc 或 clang(其中内在函数称为__builti ...

如何减小 WASM 二进制文件的大小? - How to reduce size of WASM binary?

我有一个写在 C++ 的项目,要部署的平台有 256KB 二进制大小的限制。 工具链是wasi-sdk-16.0 clang++,我们使用这个编译器将源代码编译成WASM格式的二进制文件。 在此步骤中,我们使用以下 CXX_FLAGS 编译源代码。 然后我们strip 经过以上步骤,这一步编译后的 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM