Performance 提高ar归档性能

Performance 提高ar归档性能,performance,archiving,unix-ar,Performance,Archiving,Unix Ar,我有一个包含大量自动生成代码的项目,在链接到最终可执行文件之前,我们将其构建到一个静态库中。我们使用gcc/gnat 5.04a由于文件太多,我们必须将作业分为多个批次,并多次调用ar来构建库(以避免命令行长度限制),例如: 我们正在寻找潜在的速度改进。似乎随着归档文件的增长,每个批处理所需的时间越来越长,可能是因为在添加对象之前,它需要搜索(更新)更多的内容。这似乎就是为什么删除存档比只更新旧存档更快的原因。在我们追求更高速度的过程中,我们使用标志“qcS”来表示ar命令。根据手册页,“q”(

我有一个包含大量自动生成代码的项目,在链接到最终可执行文件之前,我们将其构建到一个静态库中。我们使用gcc/gnat 5.04a由于文件太多,我们必须将作业分为多个批次,并多次调用ar来构建库(以避免命令行长度限制),例如:

我们正在寻找潜在的速度改进。似乎随着归档文件的增长,每个批处理所需的时间越来越长,可能是因为在添加对象之前,它需要搜索(更新)更多的内容。这似乎就是为什么删除存档比只更新旧存档更快的原因。在我们追求更高速度的过程中,我们使用标志“qcS”来表示ar命令。根据手册页,“q”(应该是快速附加)实际上是“r”(即“使用替换”)的同义词,“c”创建归档文件(这里没有什么特别之处),而“S”跳过生成索引(我们在最后再次使用“ranlib”介绍)


是否有任何方便的方法,使用内置工具,使此操作更快?如果“快速附加”模式工作了,这可能是我们想要的,但遗憾的是。

我们发现时间问题的很大一部分是归档文件的位置。上面的数字是针对NAS设备上的对象和归档文件。在本地硬盘(临时存储)上执行相同的操作将时间减少到约20-40秒。复制所有文件、进行本地存档并将结果复制回需要比直接在NAS上存档更长的时间,但我们正在考虑将整个构建过程移动到本地临时存储,这将大大提高性能。

我们发现,时间问题的很大一部分是正在存档的文件的位置。上面的数字用于NAS设备上的对象和存档文件。在本地硬盘(临时存储)上执行相同的操作将时间减少到约20-40秒。复制所有文件、进行本地存档并将结果复制回需要比直接在NAS上存档更长的时间,但我们正在考虑将整个构建过程移动到本地临时存储,这将大大提高性能

 [echo] Archiving codegen                   
 [echo] Deleting old codegen archive                     
   [ar] Using ar found in /usr/bin          
   [ar] Batch 1 of 7 completed in 37.871 s  
   [ar] Batch 2 of 7 completed in 55.796 s  
   [ar] Batch 3 of 7 completed in 89.709 s  
   [ar] Batch 4 of 7 completed in 256.894 s 
   [ar] Batch 5 of 7 completed in 196.704 s 
   [ar] Batch 6 of 7 completed in 248.334 s 
   [ar] Batch 7 of 7 completed in 243.759 s 
   [ar] Archiving took: 1129.067 s          
   [ar] Using ranlib found in /usr/bin      
   [ar] Indexing took: 247.223 s            
 [echo] Done with codegen