如何加快蚂蚁在一组文件上的应用



我正在使用下面的Ant应用任务在一组php源文件上运行php-lint。

<apply executable="php" failonerror="true">
    <arg value="-l" />
    <filelist refid="server.lib" />
    <filelist refid="server.scripts" />
    <fileset refid="client.lib" />
    <fileset refid="shared.lib" />
</apply>

根据Ant的输出,大约需要30秒。

Make执行的相同任务几乎是即时的。

有没有办法加快蚂蚁的任务?

编辑

我试着在应用部分添加spawn="true",它的速度大大加快了。除了测井损失之外,这是一个好的解决方案吗?

编辑2

"spawn=true"与"failoneror=true"配合不好,所以"spawn"不起作用。

编辑3

为了回答Hakre在评论中的问题,这些文件集总共覆盖了66个文件。如果有帮助的话,我可以粘贴蚂蚁输出。

编辑4

可以把这个任务写成exec任务吗?

假设这是一个与CI相关的作业,您可以将lint应用于修改后的文件:

<fileset  dir="." includes="**/*.php">
  <modified />
</fileset>

如果您的代码库很大,那么一次修改许多文件(每次提交)将是令人惊讶的。

如果脚本无效(预提交挂钩等),您也可以从另一个角度解决问题,并完全阻止提交。

  1. 尝试将parallel attribution设置为true,请参阅Ant手册
  2. 尝试在服务器模式下使用JVM运行Ant,通过Ant_OPTS设置VM参数"-server"

编辑
我的尝试大概是

<patternset id="php.sources">
    <include name="**/*.php"/>
</patternset>
<apply executable="php" failonerror="true" error="phperr.check" parallel="true">
    <arg value="-l" />
    <fileset dir="lib">
        <patternset refid="php.sources" />
    </fileset>
    <fileset dir="scripts">
        <patternset refid="php.sources" />
    </fileset>
    <fileset dir="client">
        <patternset refid="php.sources" />
    </fileset>
    <fileset dir="shared">
        <patternset refid="php.sources" />
    </fileset>
    <fileset dir="tests">
        <patternset refid="php.sources" />
    </fileset>
</apply>

使用parallel="true"时会收到什么错误消息?

任务的并行化可以在更高的级别上实现:

<target name="phplint">
    <parallel threadcount="2">
        <apply executable="php" failonerror="true">
            <arg value="-l" />
            <fileset dir="${basedir}">
                <include name="**/Dir1/**.php" />
            </fileset>
        </apply>
        <apply executable="php" failonerror="true">
            <arg value="-l" />
            <fileset dir="${basedir}">
                <include name="**/Dir2/**.php" />
            </fileset>
        </apply>
    </parallel>
</target>

由于任务消耗I/O,将其划分为更多的线程可以大大减少执行时间。

相关内容

  • 没有找到相关文章

最新更新