将make与-J4或-J8配合使用 [英] Using make with -j4 or -j8

查看:27
本文介绍了将make与-J4或-J8配合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有4个处理器,正在编译一个需要处理器的应用程序。我读到OpenCV推荐使用make-j4开关;我应该改为使用-j8吗?采用多处理器有什么优势?

推荐答案

正如您所说,-j标志告诉make允许它产生所提供数量的"线程"。理想情况下,每个线程都在其自己的核心/CPU上执行,因此您的多核/CPU环境得到了最充分的利用。

make本身不编译源文件。这是由编译器(GCC)完成的。Makefile(make的输入)包含一组目标。每个目标都有一组依赖项(与其他目标相关),并规定了如何构建目标。make读取生成文件并管理所有目标、依赖项和构建规则。除了编译源文件之外,您还可以使用make执行shell命令可以描述的任何任务。

如果您将允许的线程数设置得太高,则不可能在其自己的核心上调度每个线程。需要额外的调度(上下文)切换才能让所有线程执行。这种额外的资源使用显然会导致较低的性能。

有多条经验法则,但我想将总金额设置为<number of cores> + 1是最常见的。这背后的想法是,所有核心都有自己的线程,并且还有一个额外的管理线程来处理目标,该线程是下一个要构建的。

这篇关于将make与-J4或-J8配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆