IncrediBuild 加速原理_beter_新浪博客

IncrediBuild 加速原理
    (2009-10-25 07:57:50)   
    标签:
    it
       
    虽然现在计算机的运算速度不断提高, 但大型软件的编译速度仍然是个漫长的过程,我所在的项目, 软件大小约为200K行, 在VC6下的编译时间为3分钟(P4 1.8G, 512M), 在交叉编译时更慢, 提高编译速度将能够直接提高前期调测的效率. 本文将介绍提高编译速度的有效方法之一 - 分布式编译.
    分布式编译的原理很简单, 就是将编译的整个工作量通过分布计算的方法分配到多个计算机上执行, 这样可以获得极大的效率提升. 由于分布式计算的技术相对成熟, 现在可以见到的分布式编译软件也较多. 一般来说, 一个分布式编译软件不是一个编译器, 而是附着在某个编译器上的分布计算管理软件, 使得对于特定的编译器可以实现分布式编译.
    常见的分布式编译器通常是对应于特定的C/C++编译器, 如Gcc, Visual C++, 因为这些编译器使用相当广泛且开放度高. 因而实现分布式编译的意义更大. 下面分别以Visual C++和Gcc为例说明两个典型的分布式编译软件:
    1)IncrediBuild
    这是一个对应Visual C++ 的分布式编译软件, 通过Visual C++强大的IDE扩展功能, 它有着非常友好的界面, 可以将整个分布式编译过程直观的展现给用户, 并且它通过一个"虚拟机"的技术, 使能编译的参与者可以与编译发起者有着不同的系统配置(Windows操作系统版本, 库文件等), 甚至无需在参与者机器上安装Visual C++.
    IncrediBuild需要一个特定的计算机做仲裁者, 其他的所有计算机作为客户, 有了仲裁者的好处是, 可以有它来统一安排所有客户端所发起的编译请求, 一旦某个客户发起编译请求, 则仲裁者会根据其他客户的CPU空闲情况而安排分布式编译, 当多个客户同时发起编译请求时, 仲裁者会自动平衡分布计算负担,使得编译参与者不会占用过多的CPU.
    在我们的项目中, 使用IncrediBuild的结果如下:
    未使用: 3分钟
    5客户: 40秒
    10客户: 25秒
    可见IncrediBuild对编译性能的巨大提升, 并且在取得如此性能提升的同时, 仲裁者和编译参与者的CPU占用率很低. 保持相当高的可用性, 这是很难得的.
    IncridiBuild的缺点是目前仅支持Visual C++ 6编译器和.Net编译器, 也仅适用于Windows平台. 适用范围相对较窄.

2)DistCC
    这是一个GNU的分布式C++编译器, 适用于一切Gcc兼容的C++编译器, DistCC也具有很好的跨平台特性, 支持Linux, XFree86, CygWin等平台. 使用范围相当广泛.
    DistCC和IncrediBuild的差别在与DistCC不使用仲裁者, 直接由客户端对其他客户端发起编译请求. 所以每个客户端都需要知道其他客户端的位置, 并且当多个客户发起编译请求时不易做平衡处理.

IncrediBuild 加速原理相关推荐

  1. Java web小项目_个人主页(2)—— 边缘加速原理与实现

    摘自:Java web小项目_个人主页(2)-- 边缘加速原理与实现 作者:丶PURSUING 发布时间: 2021-03-27 14:44:40 网址:https://blog.csdn.net/w ...

  2. Android 系统(175)---Android硬件加速原理与实现简介

    Android硬件加速原理与实现简介 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速"这个词.由于操作系统对底层软硬件封装非常完善,上层软件开发者往往 ...

  3. 深入理解FPGA加速原理——不是随便写个C代码去HLS一下就能加速的

    不要写代码做无意义的操作 写这篇文章的起因是前段时间有人在网上问了我一个HLS的问题,他写的C代码HLS时报错,问我是咋回事.可惜的是由于我水平低,没玩过HLS,所以我也不知道是咋回事.不过我扫了一眼 ...

  4. 解密AI芯片的加速原理

    网上对AI芯片的剖析实在太少,这里对一些论文和大佬的研究做一个总结,希望对读者有所帮助. AI 芯片的诞生 讲到半导体,不得不从摩尔定律说起.从Intel创始人戈登·摩尔提出摩尔定律到现在已经53年了 ...

  5. 网络加速器的加速原理

    上次说了,下了个视频加速器,但很想知道他的工作原理是什么.就在网上找.就在维普上找到了,一个两页的pdf文件,结果还是不能看,为啥?要钱呗,一页0.5元.不过幸好有html版的. 原理是这样的,我们上 ...

  6. GPU加速原理浅析及代码实现

    GPU加速原理浅析及代码实现 一.CUDA简介 二.GPU架构特点 三.CUDA线程模型 四.CUDA内存模型 五.CUDA编程规范 **第一个要掌握的编程要点**:**我们怎么写一个能在GPU跑的程 ...

  7. TensorRT加速原理

    TensorRT能够加速的原因主要有两点,一方面是支持INT8和FP16的计算:另一方面是对网络结构进行了重构和优化. TensorRT支持INT8和FP16的计算 深度学习网络在训练时,通常使用 3 ...

  8. 智能CDN(上):CDN的访问过程和加速原理

    CDN(Content Delivery Network, 内容分发网络)是为加快网络访问速度而建立在现有网络之上的分布式网络,它依靠部署在全球各地边缘节点的服务器群,通过负载均衡,内容发布,内容管理 ...

  9. 六、网络加速原理-CDN

    CDN 加速原理 热衷京东平台的朋友大部分是被他极致的物流体验折服的,因为京东买东西经常第二天就到了,更有甚者上午买下午就到.而同样知名的淘宝则很难做到这点,这是由于京东在全国的各个城市都有自己的仓库 ...

最新文章

  1. 4篇SCI,1篇A类期刊,这位复旦博士生分享自身科研经验
  2. 25CSS3中的3D转换
  3. lsof查看占用高_linux lsof命令查看文件占用进程
  4. python字节码大全
  5. jdk ServiceLoader怎么用
  6. Python中_,__,__xx__方法区别
  7. c语言简易成绩管理系统c语言,C语言写的简易成绩管理系统
  8. labview虚拟心电监测系统_虚拟心电监护系统软件设计
  9. 如何将计算机网络作为热点,教你如何三步让笔记本电脑做wifi热点??
  10. T1-商贸宝,提取暂存单据提示没有权限
  11. AISC/FPGA设计中 硬件UART波特率误差计算
  12. 导入Model为啥没有addAttribute()方法???
  13. 华为是ICT人才培养的“黑土地”,谁又是浇水人呢?
  14. 一句话木马拿Shell与菜刀原理
  15. Linux下的Backlight子系统(一)
  16. 数据库恢复时的四种转储方法
  17. 基于相邻交叉口相似性的交通控制子区域方法动态划分
  18. %3c %3e 转换html,使用JavaScript将HTML转换为data:text / html链接
  19. 这可能是最非主流的斯坦·李纪念方式。论编程语言与超级英雄的联系
  20. 软件设计师-笔记(2)什么是浮点数 ,十进制转浮点数

热门文章

  1. 我用休眠做并发控制,搞垮了下游服务
  2. 用Kubernetes搭建Etcd集群和WebUI
  3. Redis:数据并发竞争顺序性
  4. telnet命令 date命令
  5. centos 时区正确,时间不对
  6. 利用win7系统自身修复还原功能
  7. Java新手之Java 从代码到运行的过程
  8. gentoo 安装mongodb
  9. 解决WP后台无法安装插件
  10. 实现 Win32 程序的消息映射宏(类似 MFC )