cmake使用make和Ninja构建对比

前提

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.mzph.cn/news/850587.shtml

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

相关文章

stream 流的一些底层实现原理

闭包 闭包的底层实现?外层的变量成为方法的一部分会生成一个lambda方法,将源本的2个参数转化3个参数此时变量就成为了方法的一部分值是如何传递的呢?会有一个专门的类用于存储此变量的值 流的切分后再并行 数组或者是集合,需要用到一个可切分的迷代器这…

【Linux高级IO】select、poll、epoll

【Linux高级IO】select、poll、epoll toc 作者:爱写代码的刚子 时间:2024.6.5 前言:本篇博客将会介绍面试重点考察的select、poll、epoll IO: input && Output read && write 应用层read&&write的时候&#xff0c…

【全开源】安心护送非急救救护车转运平台小程序(FastAdmin+ThinkPHP+Uniap

🚑安心护送非急救救护车转运平台小程序——您的健康守护者💖 安心护送转运平台小程序是一款基于FastAdminThinkPHPUniapp开发的非急救救护车租用转运平台小程序系统,可以根据运营者的业务提供类似短途接送救护服务,重症病人转运服…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于状态分解的综合能源系统完全分布式调度算法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

sqli-labs 靶场 less-7 第七关详解:OUTFILE注入与配置

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 7 SQLI DUMB SERIES-7判断注入点 进入页面中,并输入数据查看结果。 发现空数据提…

【C++11数据结构与算法】C++ 栈

C 栈(stack) 文章目录 C 栈(stack)栈的基本介绍栈的算法运用单调栈实战题LC例题:[321. 拼接最大数](https://leetcode.cn/problems/create-maximum-number/)LC例题:[316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) 栈的基…

下决心!学点前端图形开发来提升自已

前端图形开发已成为Web开发绕不开的部分。提升自己前端图形开发能力,才能快点在岗位中突围。但一看到各大实战教程的学习路径就犯难了。 内容不少,感觉学到老也跳不出来啊。还是走回老路?搞个热门国外开源框架应付算了。 我简单通过对图形系…

程序猿大战Python——流程控制——if基础语句

三大基本语句 目标:了解三大基本语句有哪些? Python中有三大基本语句,它们支撑起了程序的业务逻辑处理。 三大基本语句有: (1)顺序语句 (2)分支语句 (3)循…

树莓派 5 AI 套件(Hailo)示例

系列文章目录 前言 欢迎访问 Hailo Raspberry Pi 5 示例库。本项目展示了在 Raspberry Pi 5 上演示 Hailo AI 处理器功能的各种示例。这些示例将帮助您开始在嵌入式设备上使用人工智能。更多信息,请访问 Hailo 官方网站和 Hailo 社区论坛。 一、如何设置 Raspberry…

Apple - Quartz 2D Programming Guide

本文翻译自:Quartz 2D Programming Guide(更新时间:2017-03-21 https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction/Introduction.html#//apple_ref/doc/uid/TP300010…

Renesas MCU之SCI_SPI接口驱动LCD

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 ST7796-LCD 1.3 MCU IO与LCD PIN对应关系 2 FSP配置项目 2.1 配置项目参数 2.2 生成项目框架 3 代码实现 3.1 SPI的库函数 3.1.1 R_SCI_SPI_Open() 3.1.2 R_SCI_SPI_Read() 3.1.3 R_SCI_SPI_Write() 3.2 应用函数…

【全开源】Workerman在线客服系统(ThinkPHP+FastAdmin+Workerman)

Workerman在线客服系统:高效沟通的新选择 基于ThinkPHPFastAdminWorkerman开发的一款实时在线客服系统,支持多客服(不限座席)、知识库、离线留言板、离线消息、历史会话、微信小程序接入、Uni-app接入(高级授权)、用户轨迹等功能。​ 📢 一…

如何远程连接Linux服务器?

远程连接Linux服务器是通过网络连接到位于远程位置的Linux服务器,以进行服务器管理和操作。远程连接使得系统管理员可以方便地远程访问服务器,进行配置、维护和故障排除等操作,而不必亲自在服务器前工作。以下是一些常用的远程连接方法&#…

python - Pandas缺失值处理

文中所用数据集已上传,找不到的可以私聊我 学习目标 知道空值和缺失值的区别以及缺失值的影响 知道如何查看数据集缺失值情况的方法 知道缺失值处理的办法 1 NaN简介 好多数据集都含缺失数据。缺失数据有多种表现形式 数据库中,缺失数据表示为NULL 在某些编程语…

【C语言】宏详解(上卷)

前言 紧接着预处理详解(上卷),接下来我们来讲宏(隶属于预处理详解系列)。 #define定义宏 #define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro&#xff…

AI如何创造情绪价值

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面。从智能家居到自动驾驶,从医疗辅助到金融服务,AI技术的身影无处不在。而如今,AI更是涉足了一个全新的领域——创造情绪价值。 AI已经能够处…

2024年【天津市安全员C证】免费试题及天津市安全员C证试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 天津市安全员C证免费试题是安全生产模拟考试一点通生成的,天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材汇编出天津市安全员C证仿真模拟考试。2024年【天津市安全员C证】免费试题及天津市…

分享美好,高清无阻 - 直播极简联网解决方案

1、需求背景 随着移动互联网、UGC模式和直播平台的发展,网络直播的门槛日益降低,越来越多的人希望成为直播的主角。基于物联网的户外直播无线联网解决方案应运而生,满足直播者的需求。 户外直播无线联网解决方案提供了无处不在的直播体验&a…

SpringBoot与MyBatis的快速整合(基于注解)

文章目录 创建Spring Boot项目配置数据库连接信息编写MyBatis Mapper接口使用XML文件编写SQL映射配置数据源切换引入Druid依赖配置Druid数据源 配置MyBatis支持事务管理 在使用Spring Boot创建新项目或新模块时,如果需要使用MyBatis来进行数据库操作,可以…

uniapp实现微信小程序调用云函数【vue2】

在uniapp中的vue 2框架中想要改变默认的目录结构,将装有云函数的文件夹在运行后一起复制到unpackage 文件下,主要用 copy-webpack-plugin 方法来实现,具体步骤如下: 一、创建一个vue 2 框架的uniapp 二、新建一个文件夹装云函数 …