当前位置: 首页 > news >正文

16、构建与算术:GNU make的实用技巧与挑战

构建与算术:GNU make的实用技巧与挑战

1. 构建过程中的处理器与加速问题

在小型构建任务中,处理器数量与最大加速比存在一定关系。以下是相关数据:
| 处理器数量 | 最大加速比 |
| — | — |
| 10 | 2.46x |
| 11 | 2.50x |
| 12 | 2.53x |

根据阿姆达尔定律,对于这个小型构建,大约从8个处理器开始,最大加速比会趋于平稳。而实际的平稳状态还受到构建中只有13个可能任务的限制。

从构建结构来看,最多使用8个处理器。原因在于有5个任务(t1、t2、t4、t6和t7)可以无依赖地并行运行,另外有3组小的任务链(t3、t5和t8;t9和t10;t11和t12),每组每次使用一个处理器。构建任务t可以复用8个处理器中的一个,因为此时它们都处于空闲状态。

在实际应用中,像C和C++这类有链接步骤的语言,阿姆达尔定律会显著影响构建时间。通常,所有目标文件在链接步骤之前构建完成,然后需要运行一个(通常很大的)单一链接过程。这个链接过程往往无法并行化,成为构建并行化的限制因素。

2. 让 $(wildcard) 函数递归搜索

内置的 $(wildcard) 函数不是递归的,它只能在单个目录中搜索文件。不过,可以在 $(wildcard) 中使用多个通配符模式来搜索子目录。例如,$(wildcard/.c) 可以查找当前目录所有子目录下的所有 .c 文件。但如果需要搜索任意目录树,就没有内置的方法。

幸运的是,创建 $(wildcard) 的递归版本很容易,代码如下:

http://www.cnnetsun.cn/news/127481.html

相关文章:

  • 企业级html 图书管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 7、伪微分算子相关理论及狄拉克哈密顿量的解耦
  • 基于微信小程序的在线家庭清洁系统毕设源码
  • 20、微软 Windows Vista 使用指南:账户管理与数据保护
  • 15、活动目录用户与组管理操作指南
  • 17、活动目录计算机对象与组织单位管理指南
  • 12、Ourmon:网络监控与异常检测工具全解析
  • 22、恶意软件分析与检测全解析
  • 产品解读 | Ftrans SFT:信创浪潮下的FTP替代革命者
  • 继何恺明DyT后,LayerNorm再遭暴击!简单erf函数竟成Transformer新宠
  • C语言链表2
  • 蜣螂优化(DBO)算法在工程实际中求目标函数最小值的例子:压力容器设计成本最小化的4变量4约束...
  • 12、游戏内存中常见数据结构解析
  • 21、游戏响应式黑客技术全解析
  • 26、游戏隐藏与反检测技术全解析
  • Kotaemon网络安全问答:CVE漏洞快速查询
  • Kotaemon能否自动识别问题紧急程度?
  • 复杂时序场景的突围:金仓数据库是凭借什么超越InfluxDB?
  • 特价股票投资中的跨境投资策略与风险管理
  • 为分析经理制定全面的仪表板策略
  • MATLAB实现神经网络的模式识别
  • 17、在 Linux 系统中运行 Windows 程序及优化工作流
  • Kotaemon索引构建优化:FAISS vs HNSW性能对比
  • Kotaemon在低资源环境下的轻量化改造方案
  • 16、企业 Linux 桌面迁移与后台基础设施搭建指南
  • 19、数据迁移与备份:从 Windows 到 Linux 的全面指南
  • Kotaemon销售谈判策略建议:促成交易技巧
  • 特征工程中的特征构造技巧:大数据分析的创新实践
  • 32、Linux在不同场景下的应用优势与案例分析
  • 26、深入了解GNU Lesser General Public License