我们的构建非常缓慢.这是一个用Ant构建的Java系统,我在Windows XP上运行它.根据硬件的不同,可能需要5到15分钟才能完成.
查看计算机上的整体性能指标,以及将硬件差异与构建时间相关联,表明该进程受I/O限制.它还表明,该过程比写作更能阅读.
但是,我还没有找到一种很好的方法来确定正在读取或写入哪些文件,以及多少次.我怀疑,随着我们的许多子项目和随后的编译器调用,构建多次重读相同的常用库.
什么是一些分析工具会告诉我给定的进程对哪些文件做了什么?免费很好,但不是必需的.
使用过程监视器,正如Jon Skeet建议的那样,我能够证实我的怀疑:几乎所有的磁盘活动都是读取和重新读取库,JDK的"rt.jar"副本和其他库位于顶部.列表.我不能使RAM磁盘足够大以容纳我使用的所有库,但是将"最热"的库安装在RAM磁盘上会使构建时间缩短约40%; 显然,Windows文件系统缓存工作做得不够好,尽管我告诉Windows要优化它.
我注意到一件有趣的事情是,JAR文件上的典型"读取"操作只有几十个字节; 通常有两个或三个,然后在文件中进一步跳过几千字节.它似乎不适合批量读取.
我将在闪存驱动器上对我的所有第三方库进行更多测试,看看它有什么影响.
如果您只需要Windows,SysInternals Process Monitor应该向您展示您需要知道的一切.您可以选择该过程,然后查看每个操作,并获取文件操作的摘要.