【发布时间】:2015-11-19 21:01:05
【问题描述】:
你好,我是Linux平台的初学者,所以我对终端命令不熟悉。
我正在用 C++ 编写一个应用程序,我预计它会消耗大量的处理能力。所以我想确保我在我的设备上使用了所有可用的内核(它有 4 个内核)。
我正在使用以下内容来创建可执行文件:
gcc -o blink -l rt blink.c -l bcm2835
其中 bcm2835 是我用于 I/O 的库。所以我的问题是,这个命令是使用所有可用的内核还是我可以做些什么来优化它?我愿意使用所有可用的东西来扔厨房水槽,如果它能让这段代码运行得更快的话。
【问题讨论】:
-
make -j4不会让你的代码使用多核,它会让构建系统使用多核。 -
我明白了,我会从问题中删除它。所以我的问题仍然是:我在运行代码时是否使用了所有内核,如果没有,我可以做些什么来确保这种情况发生。
-
如果你想利用多核,你需要研究多线程,我认为这个话题太宽泛,无法在一个 SO 问题中涵盖。
-
我明白了。我会这样做的,谢谢。
-
@OE1:这是一个“O”,而不是一个零;通常你把它放在命令行的开头。如果缺少它,编译器会生成一个非常简单的 C++ 代码到机器模式的转换(但这在调试中很有用,因为它更容易将源代码行映射到生成的代码);启用优化后,编译器对代码执行各种魔法(内联、表达式折叠、更好的寄存器使用、自动矢量化、死代码消除、指令重新排序以更好地利用管道......)以使其运行得更快。跨度>
标签: c++ gcc compilation compiler-optimization