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. C++ STL 之 multimap案例之员工分组

    #include <iostream> #include <vector> #include <map> #include <string> #incl ...

  2. Redis和MemCache静态Map做缓存区别

    本地缓存和分布式缓存 本地缓存:使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不 ...

  3. Python学习记录4-列表、元祖和集合

    list列表 一组由有序数据组成的序列 数据有先后顺序 数据可以不是一类数据 list的创建 直接创建,用中括号创建,内容直接用英文逗号隔开 使用list创建 列表包含单个字符串的时候是一个特例 # ...

  4. Delphi 类类型和对象

  5. 看一下我学习linux的过程

    学习Linux的最佳方法是将它用于日常工作. 阅读Linux书籍,观看Linux视频不仅仅是足够的. 学习Linux没有捷径可走. 你不可能在一夜之间在Linux中掌握. 这需要时间和持久性. 刚刚潜 ...

  6. HLS manifest standard 翻译: HTTP Live Streaming draft-pantos-http-live-streaming-23

    我为什么要干这种事 Introduction to HTTP Live Streaming 1 OVerview Multimedia presentation : specified by a Un ...

  7. 4.caffe:train_val.prototxt、 solver.prototxt 、 deploy.prototxt( 创建模型与编写配置文件)

    一,train_val.prototxt name: "CIFAR10_quick" layer { name: "cifar" type: "Dat ...

  8. 一些网站后台模板源码分析 Particleground.js 验证码

    转: https://blog.csdn.net/bcbobo21cn/article/details/51271750 1 灰色简洁企业后台管理模板 效果: 看下项目结构: 它使用了moderniz ...

  9. hbase实践之HFile结构

    本文目录如下所示: 目录 HFile在HBase架构中的位置 什么是HFile HFile逻辑结构 HFile逻辑结构的优点 HFile物理结构 HFile生成流程 HFile中Block块解析 多大 ...

  10. Java8-Stream-No.09

    import java.util.Arrays; public class Streams9 { public static void main(String[] args) { Arrays.asL ...