我们的构建令人讨厌。这是一个用Ant构建的Java系统,我正在Windows XP上运行我的Java系统。取决于硬件,可能需要5到15分钟才能完成。
观察计算机上的总体性能指标,以及将硬件差异与构建时间相关联,表明该过程受I / O约束。这也表明该过程所做的阅读工作远胜于写作。
但是,我还没有找到确定要读取或写入 哪些 文件以及执行多少次的好方法。我的怀疑是,随着我们的许多子项目以及随后对编译器的调用,该构建多次重读相同的常用库。
有哪些配置文件工具可以告诉我给定进程正在处理哪些文件?免费是不错的,但不是必需的。
根据Jon Skeet的建议,使用ProcessMonitor,我可以证实自己的怀疑:几乎所有磁盘活动都是读取和重新读取库,而JDK的“ rt.jar”副本和其他库位于顶部。名单。我无法使RAM磁盘足够大以容纳我使用的所有库,但是在RAM磁盘上安装“最热”的库会使构建时间减少了大约40%;显然,即使我已告诉Windows为此进行优化,Windows文件系统的缓存也无法很好地完成工作。
我注意到的一件有趣的事情是,对JAR文件的典型“读取”操作只有几十个字节。通常有两个或三个,然后在文件中再跳过几千字节。它似乎不适合批量读取。
我将对闪存驱动器上的 所有 第三方库进行更多测试,并观察其效果如何。
如果 仅 Windows需要它,则SysInternals ProcessMonitor应该向您显示您需要了解的所有内容。您可以选择进程,然后逐一查看每个操作,并获得文件操作的摘要。