cmake使用make和Ninja构建对比

news2025/1/11 21:52:15

前提

makeNinja是两个常见的构建工具,在网上查阅了一些资料,说是Ninjamake构建速度要快很多。但是具体不知道快多少,所以趁着这次编译clang的机会,分享下它们在时间方面差多少。

步骤

下载llvm

参考llvm官网,这里我们使用Shallow clone

git clone --depth=1 https://github.com/llvm/llvm-project.git

Shallow clone 是指在使用Git进行仓库克隆时,只克隆特定数量的最近的提交记录,而不是完整的提交历史。这种克隆方式可以显著减少下载的时间的数据量,对于大型仓库特别有用。

可以使用--depth选项来指定克隆的深度,如上面所示,表示只会克隆最新的一个提交。如果需要更多的提交,可以调整--depth的值。

使用make进行构建

cmake -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD="host" ../llvm

-DLLVM_ENABLE_PROJECTS 只构建clang,模式为Debug,此时cmake 会生成make的构建档。
然后使用make clang -j16进行构建。

在我的电脑,配置如下:
在这里插入图片描述
16个线程。

共用时2h1m52s

使用Ninja进行构建

cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD="host" ../llvm

-G Ninja表示产生Ninja构建档。
然后

cmake --build . --target clang

只生成clang

共用时1h25m

结论

首先这次实验不是在很严谨的条件下开展的,所以会存在误差。但是整体上来看,在时间方面,Ninja是要比make快上不少。

接下来有机会的话,还会更新下它们的详细区别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shell脚本学习_内置命令

目录 1.内置命令介绍: 2.Shell内置命令:alias设置别名 3.Shell内置命令:echo输出字符串 4.Shell内置命令:read读取控制台输入 5.Shell内置命令:exit退出 6.Shell内置命令:declare设置变量 1.内置命令…

详解SM3算法加密流程(SM3加密算法一)

1、SM3 算法简介 SM3是中国国家密码管理局发布的消息摘要算法,首次发布于2010年,并于2016年发布了正式的国家标准GB/T 32905-2016。类似于国际上广泛应用的SHA-256算法,但有其独特的设计和实现细节。 该算法应用于各种数据加密和验证场景&…

【NI国产替代】产线综测仪:锂电池保护板测试仪,支持快速定制

• 精度等级01% • 支持直流电压、电流、nA 级待机电流电阻等,常规测试 • 支持过压、欠压、过冲、过放、过温,短路等,保护测试 • 通讯总线电平可编程,兼容多种 • 支持 SWD 或IIC 固件烧录 • 测试速度快,支持最多 24 通道…

Windows关闭自动更新最有效的方法

按WR打开电脑命令框输入“regedit”进入注册表 依次点击以下几个 右击新建一个“DWORD(32位)值”,命名为”FlightSettingsMaxPauseDays“ 右边选择十进制,左边填写暂停更新的天数 打开windows更新,进入高级选项 选择暂停更新的天数&#xff…

数据库(27)——多表查询——自连接

语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...; 自连接可以是内连接查询也可以是外连接查询。 演示 我新增了字段friend便于演示 查询所有人的名字以及他们的friend的人的名字: select a.name,b.name from user a,user b where a.friendb.id; 其…

L48---1637. 两点之间不包含任何点的最宽垂直区域(排序)---Java版

1.题目描述 2.思路 (1)返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。 我的理解是相邻两个点,按照等差数列那样,后一个数减去相邻的前一个数,才能保证两数之间不含其他数字。 (2)所以&…

kali2022安装教程(附安装包)

第一步:下载镜像文件 百度网盘下载https://pan.baidu.com/s/1efRQGFTbq6Kgw9axLOmWzg?pwdemxf 第二步:打开Vmware 第三步:进行各项配置 创建新的虚拟机,选择高级,然后下一步 直接默认下一步 选择稍后安装然后下…

CUDA 编程(1):使用Grid 和 Block分配线程

1 介绍 1.1 Grid 和 Block 概念 核函数以线程为单位进行计算的函数,cuda编程会涉及到大量的线程(thread),几千个到几万个thread同时并行计算,所有的thread其实都是在执行同一个核函数。 对于核函数(Kernel),一个核函数一般会分配1个Grid, 1个Grid又有很多个Block,1个Bloc…

IO流(缓冲流)

1.字节缓冲流 原理:字节缓冲输入流自带8KB缓冲池;字节缓冲输出流自带8KB缓冲池 public static void main(String[] args) throws IOException {try(InputStream is new FileInputStream("D:\\pt\\123.jpg");//1.定义一个字节缓冲输入流包装原始的字节输…

看似不同的事情,却是相同的坑

目录 一、背景二、过程1.遭遇战-微盘股的下杀2.不失为一件好事3.一切向后看吧,最近的学习感受4.该有的心境 三、总结 一、背景 也在一点点改变,期间势必要经历流血的过程;所谓无疯狂不成长,积极的心态去应对,去总结总…

数据分析常用模型合集(一)AARRR模型和漏斗模型

准备把常用的数据分析模型,像什么AARRR,RFM之类的,逐个全部写一下; 最好能带点案例和代码,搞一个小合集。 最终达到完全不懂的人,看完就能知道得差不多; 数据分析常用模型合集(二…

中心极限定理的MATLAB例

独立同分布的中心极限定理: 设 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1​,X2​,…,Xn​ 是独立同分布的随机变量序列,且 E ( X i ) μ E(X_i) \mu E(Xi​)μ, D ( X i ) σ 2 > 0 D(X_i) \sigma^2 > 0 D(Xi​)σ2>0&a…

再读高考作文题

新课标I卷:讨论了随着互联网和人工智能的普及,问题是否会变得越来越少,要求考生写一篇文章,表达自己对于这一现象的联想和思考。 从来就没有什么救世主 AI也不是​​​​​ 一直不会写作文,直到高中,才堪堪…

ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

AI Agentic Design Patterns with AutoGen(上):顺序对话、代理反思

文章目录 一、多代理对话:单口喜剧1.1 Agent的基本功能1.2 多代理对话示例:单口喜剧1.2.1 创建Agent1.2.2 开始对话1.2.3 查看对话信息,自定义对话摘要1.2.4 设置对话终止条件 二、顺序对话:客户入职2.1 创建Agent2.2 构建顺序对话…

profile-3d-contrib,github三维立体图的使用

图片展示: 参考: https://zhuanlan.zhihu.com/p/681786778 原仓库链接: GitHub - yoshi389111/github-profile-3d-contrib: This GitHub Action creates a GitHub contribution calendar on a 3D profile image. 第一步 在你的个人仓库下找到Actions 第二步 点…

揭秘:币圈黑科技私钥碰撞器的项目教程玩法,外面竟然收费200+

一、前言:探寻币圈私钥探测器神秘面纱 在风华正茂的币圈,不仅有无数高涨或者暴跌的数字货币,更有许多被誉为“黑科技”的工具备受热议。其中,私钥碰撞器就是这些黑科技中的一员,它能够搜索并碰撞出特定地址的私钥&…

嘉立创面板制作不规则图案技巧

首先附上效果图展示: 所需软件:嘉立创EDA(专业版)、photoshop、Adobe Illustrator 嘉立创EDA(专业版): 嘉立创面板绘制很容易上手,只要了解这几个图层的作用便可以做出自己想要的面板。 材料边界层: 代表选⽤的材料…

SpringAI的Transform入门

Transform转换 帮助将文档分割以适应 AI 模型的上下文窗口。 假如我们想要用 openai api 对一个段文本进行总结,我们通常的做法就是直接发给 api 让他总结。但是如果文本超过了 api 最大的 token 限制就会报错。这时,我们一般会进行对文章进行分段&#…

Linux线程安全:线程互斥

一、线程互斥的概念 1.1临界资源与互斥的关系 临界资源:多线程执行流共享的资源就叫做临界资源。 临界区:每个线程内部,访问临界资源的代码,就叫做临界区。 互斥:任何时刻,互斥保证有且只有一个执行流进入…