GCC 并行编译大型源代码文件功能的改进
虽然 GNU Make 和其他构建系统可以很好地进行扩展以并发编译大量文件,不过 GCC 自身也一直在让 GCC 的更多工作在编译大型源代码文件时能够并行执行。
早在2019年夏天,其团队就已开始尝试解决并行化遇到的瓶颈,让更多的编译器工作在更大的源代码文件中能够并行运行,并取得了不错的进展。曾参与开发的学生开发者 Giuliano Belinassi 现在又回到了 GSoC 并继续此项工作。
Giuliano 近日提供了关于“自动并行编译可行性”的第二份报告,该报告旨在加快大文件的编译以及为 GNU Jobserver 进行集成。
该代码目前可正常运行,其他开发者也可以通过 GCC 的分支版本进行尝试。数据显示,在四核 Intel Core i7 移动处理器上的提速范围从轻微减速提升到原始 GCC 代码的 1.9 倍速度左右。目前,GCC 的 C、C++ 和 Fortran 前端都支持这项工作,而其他前端可能会在一段时间内出现。
Giuliano 在最新的状态报告中总结道:“目前项目进展顺利,尽管诸如禁用 static promotion 之类的保守方法可能会对并行性潜力产生负面影响。未来解决此问题的方法之一是将最终的汇编文件传送回主 GCC 进程,然后再串联成一个汇编文件,而不是对多个汇编文件进行部分链接。这当然会增加进程间通信的成本,但最终的结果应该是值得的。”

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 分布式 ID 生成服务,真的有必要搞一个
目录 阐述背景 Leaf snowflake 模式介绍 Leaf segment 模式介绍 Leaf 改造支持 RPC 阐述背景 不吹嘘,不夸张,项目中用到 ID 生成的场景确实挺多。比如业务要做幂等的时候,如果没有合适的业务字段去做唯一标识,那就需要单独生成一个唯一的标识,这个场景相信大家不陌生。 很多时候为了图方便可能就是写一个简单的 ID 生成工具类,直接开用。做的好点的可能单独出一个 Jar 包让其他项目依赖,做的不好的很有可能就是 Copy 了 N 份一样的代码。 单独搞一个独立的 ID 生成服务非常有必要,当然我们也没必要自己做造轮子,有现成开源的直接用就是了。如果人手够,不差钱,自研也可以。 今天为大家介绍一款美团开源的 ID 生成框架 Leaf,在 Leaf 的基础上稍微扩展下,增加 RPC 服务的暴露和调用,提高 ID 获取的性能。 Leaf 介绍 Leaf 最早期需求是各个业务线的订单 ID 生成需求。在美团早期,有的业务直接通过 DB 自增的方式生成 ID,有的业务通过 redis 缓存来生成 ID,也有的业务直接用 UUID 这种方式来生成 ID。以上的方式各自...
- 下一篇
GRUB2 中被曝新 BootHole 漏洞,影响大量 Linux/Windows 系统
安全研究公司Eclypsium最近在GRUB2 中发现了一个新的安全漏洞,称为“BootHole”。GRUB2 是 Linux 发行版中最常用的引导程序之一,通过该漏洞,攻击者可影响大多数的 Linux 发行版和 Windows设备。 该漏洞可用于在 boot 过程中获得任意代码执行。利用此漏洞的攻击者可以安装具有永久性和隐秘性的恶意引导程序,从而获得对受害者设备近乎完全的控制。 Eclypsium称,几乎每个 Linux 发行版都会受到该漏洞影响。此外,那些使用了Secure Boot与标准的微软第三方 UEFI 证书授权的 Windows 设备也会受到该漏洞影响;范围涵盖了大量的 Windows 台式机、笔记本、工作站、服务器、以及其它相关技术领域。 而在公开披露该漏洞之前,Eclypsium 已与包括 OS 供应商、计算机制造商和计算机应急响应小组(CERT)在内的行业实体和机构进行了通报披露。 目前,Canonical 安全团队已针对 Ubuntu 和其他主要 Linux 发行版本发布了 GRUB2 的更新。此外,该团队还发现了其他七个漏洞,并在此次更新中进行了修复。Red H...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程