我通常使用高级构建系统cmake来构建我的 C/C++ 代码。但出于各种原因,我使用的是直接的 GNU make。
我正在做递归构建,其中每个目录都有一个 makefile。
我最近不得不将我所有的 makefile 从 using 更改make为$(MAKE),然后并行构建开始工作。
我读过的文献都说“总是使用$(MAKE)”(O'Reilly 的书,stackoverflow.com 上超过 10-40K 点的人提供了 5 个以上的解决方案)。
在你的 makefile 中,为什么总是使用$(MAKE)而不是make?
(显然一个原因是因为$(MAKE)以某种方式启用了并行构建。)
除了简单的替换$(MAKE)with之外,还有更多的事情发生make吗?
对于 x86-64,有许多指令集可以加速代码执行。以下是 gcc wiki https://gcc.gnu.org/wiki/FunctionMultiVersioning的列表:
-O2?为了简单起见,我们只说问题是关于 gcc 版本 12(最新的主要版本)。但我想知道我需要做什么 gcc 命令开关/选项,以便我可以看到我的 gcc 版本的功能。
我认为 gcc 选择了“可移植”的东西,所以这可能意味着速度很慢。但这只是我的假设......我想知道这是否意味着像SSE4.2或没有?
我遇到了两种不同的方法来分成iterable"块"(超过1项).
from itertools import izip_longest
def grouper(iterable, n, fillvalue=None):
args = [iter(iterable)] * n
return izip_longest(*args, fillvalue=fillvalue)
Run Code Online (Sandbox Code Playgroud)
def chunker(seq, size):
return (seq[pos:pos + size] for pos in xrange(0, len(seq), size))
Run Code Online (Sandbox Code Playgroud)
itertools实现是否会为您带来"额外"的收益?
"额外"的地方,可能更快或更灵活或更安全.
我问,因为这里显示的itertools实现肯定不是更可读/直观的IMO.