IncrediBuild 可以在Server段通过修改单个任务的进程上限来实现提升任务执行速度。

IncredBuild本机版也可以用来进行本机实现多线程任务分发,这样可以充分利用多核资源。

提交分布式任务涉及该工具的三个命令:

xgConsole.exe ,负责编译工程任务的发起;

xgSubmit.exe ,负责提交各个工程文件的编译任务;

xgWait.exe ,负责最后的链接。

 示例:

run.bat
@ECHO OFF
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgSubmit.exe /group=UTest # test.exe .cpp
xgWait.exe /group=UTest
echo All Task Finished xgConsole /command="run.bat" /openmonitor
Rem UTest.bat - Distributed Version
Rem ===============================
xgSubmit.exe /group=UTest /command UTest.exe /in=Input1.dat /out="Results\"
xgSubmit.exe /group=UTest /command UTest.exe /in=Input2.dat /out="Results\"
xgSubmit.exe /group=UTest /command UTest.exe /in=Input3.dat /out="Results\"
xgSubmit.exe /group=UTest /command UTest.exe /in=Input4.dat /out="Results\"
xgSubmit.exe /group=UTest /command UTest.exe /in=Input5.dat /out="Results\"
xgWait.exe /group=UTest
UReport.exe /in="Results\" /ShowReport
:end xgConsole.exe UTest.bat

自己写的一个分布式批处理脚本:

@ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
set time1=%time:~0,2%%time:~3,2%%time:~6,2% set PRJ_DIR=%CD%
set WORK_FILE=lint
set BAT=run.bat
set SOURCE=filelist.txt ::进工作目录
IF NOT EXIST %WORK_FILE% (
echo No %WORK_FILE%!!!
EXIT
) cd %WORK_FILE% IF NOT EXIST %SOURCE% (
echo No %SOURCE%!!!
EXIT
) set tmpIndex=0
set duplicateCount=0 ::遍历文件列表
FOR /F "eol=/delims=" %%i in (%SOURCE%) do (
set tmp=%%i set isannotate=false
IF "!tmp:~0,1!"=="#" (
set isannotate=true
)
IF "!tmp:~0,2!"=="//" (
set isannotate=true
) IF !isannotate!==false (
set fileorfolder=!tmp:%%PRJ_DIR%%=%PRJ_DIR%!
set existfile=false
FOR /F "delims=" %%j in ('dir /s /b /A:-D !fileorfolder!') do (
IF EXIST "%%j" (
set existfile=true ::判重标识
set duplicate=false
FOR /L %%k IN (0,1,!tmpIndex!) do (
IF /I !tmp[%%k]!=="%%j" (
set duplicate=true
)
) ::判重
IF !duplicate!==false (
set tmp[!tmpIndex!]="%%j"
set /a tmpIndex=tmpIndex+1
) ELSE (
set /a duplicateCount=duplicateCount+1
)
)
) IF !existfile!==false (
echo !tmp! error
echo !fileorfolder!
)
)
) ::清空临时环境变量,否则后面执行xgConsole时会尝试解析这些环境变量而出错
set tmp=
set fileorfolder=
set existfile=
set duplicate= echo TaskInfo FileCount:!tmpIndex! Duplicate:!duplicateCount! ::重新生成bat
IF EXIST "%BAT%" (
del "%BAT%"
) echo @ECHO OFF >>%BAT% ::按实际大小遍历
set /a tmpIndex=tmpIndex-1 FOR /L %%k IN (0,1,!tmpIndex!) do (
echo xgSubmit.exe /group=UTest # test.exe !tmp[%%k]! >>%BAT%
) echo xgWait.exe /group=UTest >>%BAT%
echo echo All Task Finished! >>%BAT% xgConsole /NOLOGO /command="%BAT%" set time2=%time:~0,2%%time:~3,2%%time:~6,2%
set /a time3=%time2%-%time1%
echo 耗时%time3%秒 EXIT

incredibuild(分布式任务软件)脚本的更多相关文章

  1. Google分布式构建软件之二:构建系统如何工作

    分布式软件构建第二部分:构建系统如何工作 注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 上篇文章中提到了在Google,所 ...

  2. Google分布式构建软件之三:分布式执行构建步骤

    注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 之前两篇文章分别介绍了Google 分布式软件构建系统Blaze相关的为了提 ...

  3. centos环境自动化批量安装软件脚本

    自动化安装jdk软件部署脚本 准备工作: 1.在执行脚本的服务器上生成免密码公钥: 安装expect命令 yum install -y expect ssh-keygen 三次回车 2.将jdk-7u ...

  4. centos环境自动化批量安装jdk软件脚本

    自动化安装jdk软件部署脚本 准备工作: 1.在执行脚本的服务器上生成免密码公钥: 安装expect命令 yum install -y expect ssh-keygen 三次回车 2.将jdk-7u ...

  5. Window平台下的静默下载并安装软件脚本bat

    一,隐藏命令窗口 当我们运行bat脚本的时候,弹出CMD窗口.如果要隐藏窗口可以在bat脚本开头处写一下代码: @echo off if "%1" == "h" ...

  6. Google分布式构建软件之一:获取源代码

    本文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但尊重作者版权,注名原文地址. 在Google,所有的产品都是在主干上开发的.这样的好处:每个人都可以查看和修改代码, ...

  7. Google分布式构建软件之四:分发构建结果

    注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 之前的文章,介绍了Google在分布式构建软件过程中,如何把构建过程分发到许 ...

  8. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  9. selenium-grid 分布式 实现同一脚本在不同pc上运行

    1.使用版本:selenium 3.11.0chrome 65phantomjs 2.1.1selenium-server selenium-server-standalone-2.46.0.jar ...

随机推荐

  1. SpringCloud之Hystrix容错保护原理及配置

    1 什么是灾难性雪崩效应? 如下图的过程所示,灾难性雪崩形成原因就大致如此: 造成灾难性雪崩效应的原因,可以简单归结为下述三种: 服务提供者不可用.如:硬件故障.程序BUG.缓存击穿.并发请求量过大等 ...

  2. 三、DQL语言

    目录 一.基础查询 (一)语法 (二)特点 (三)示例 二.条件查询 (一)语法 (二)筛选条件的分类 三.排序查询 (一)语法 (二)特点 四.常见函数 (一)介绍 (二)分类 五.单行函数 (一) ...

  3. Computer Vision_1_Active Appearance Models :Active Appearance Models——1998

    此为计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面. 1. Active Appearance Models 活动表观模型和活动轮廓模型基本思想来源 Snake,现在 ...

  4. Win10系统升级更新方式将会更智能

    使用Win10系统的你肯定遇到过在工作时开始自动更新而不得不搁置工作的情况,想必你也已经被Win10系统的自动更新折磨不已,不过这种情况将会马上得到改观. 微软现在已经开始寻找更智能的版本升级更新方式 ...

  5. 配置Linux内核

  6. 前端基础(一):HTML内容

    HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5 ...

  7. vim文本编辑及文件查找应用2

    vim编辑器: vim末行模式: 内建的命令行接口 (1)地址定界 :start_pos[,end_pos] #:特定的第#行,例如5即第5行 .:当前行 .,+#:当前行,加#行的行范围 $:最后一 ...

  8. final 在 java 中有什么作用?(未完成)

    final 在 java 中有什么作用?(未完成)

  9. django国际化的简单设置

    设置国际化的具体步骤: 一.国际化 1)效果:针对不同的国家的人可以配置不同的语言(一般是英文和中文,  English  Chinese) 2)目的:增加项目的用户量 3)难度:不难 比较费劲的就是 ...

  10. 03—Code First

           Code First模式我们称之为“代码优先”模式,使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库.这样设计的 ...