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. 一种无法被Dump的jar包加密保护解决方案

    作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: windwos10.I ...

  2. 如何提高后台服务应用问题的排查效率?日志 VS 远程调试

    转眼间,距离Jerry最近一篇文章推送已经过去了一个多月的时间了. 公众号更新的频率降低,不是因为Jerry偷懒,而是由于从春节过后,我所在的SAP成都研究院数字创新空间整个团队,一直在忙一个5月份需 ...

  3. 【github】github的使用

    一.上传本地代码 1.在github上新建一个repository(命名为英文) 2.打开cmd,进入上传代码所在目录 3.输入如下命令 第一步:git init --建仓第二步:git add  * ...

  4. TF版网络模型搭建常用代码备忘

    本文主要介绍如何搭建一个网络并训练 最近,我在写代码时经常碰到这样的情况,明明记得代码应该怎么写,在写出来的代码调试时,总是有些小错误.原因不是接口参数个数不对,就是位置不对.为了节约上网查找时间,现 ...

  5. myBatis的坑 01 %的坑 框架内置的小BUG

    <select id="queryUserLikeUserName" resultType="cn.itcast.pojo.User"> selec ...

  6. PHP面试题--基础

    1.PHP语言的一大优势是跨平台,什么是跨平台?一.PHP基础: PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配置,不 ...

  7. F - Star SPOJ - STARSBC

    Fernando won a compass for his birthday, and now his favorite hobby is drawing stars: first, he marks ...

  8. c语言啊

    双链表 quacklist 内核  模块加载

  9. 浅谈矩阵变换——Matrix

    矩阵变换在图形学上经常用到.基本的常用矩阵变换操作包括平移.缩放.旋转.斜切. 每种变换都对应一个变换矩阵,通过矩阵乘法,可以把多个变换矩阵相乘得到复合变换矩阵. 矩阵乘法不支持交换律,因此不同的变换 ...

  10. Introduction to Go Modules

    转:https://roberto.selbach.ca/intro-to-go-modules/ git init git add * git commit -am "First comm ...