gpt4 book ai didi

Ruby - GCC 的依赖文件解析优化

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:46 24 4
gpt4 key购买 nike

我正在寻找有关以下用 Ruby 编写的代码的优化想法。它在依赖文件中查找头文件依赖项(由 GCC 使用 gcc -M -MM -MF 生成)

我运行了 Ruby 分析器,发现大部分 CPU 时间花在了下面的 Array#each 函数上。

lines = File.readlines(depends_file)
lines.each do |line|
if line.include?(".h") then
line.lstrip.rstrip.chomp("\\").split(' ').each do |line|
header_dependencies << line
end
end
end

depends 文件包含由 gcc 的 -M 选项指定的 makefile 规则格式的依赖项,参见 GCC's Preprocessor Options .这是我项目中的一个示例 -

CyclicRedundancyCheck.o: src/CyclicRedundancyCheck.c \
inc/CyclicRedundancyCheck.h inc/StdDefs.h

有人可以发布一个替代的、高度优化的解决方案吗?

最佳答案

这里没有进行大量优化,但速度更快(我的测试用例大约提高了 20%):

File.open(depends_file, 'r') do | io |
io.each do |line|
next unless line.include?('.h')
header_dependencies.concat(line.split)
end
end
header_dependencies.delete('\\')

我不认为使用 Ruby 本身可以获得更多。如果这真的太慢了​​,您应该考虑(部分地)用 C 语言(作为扩展)对其进行编程。

另请注意,该方法远非稳健。例如

 foo.o: src/ext.hlib/foo.c \

会被错误匹配。不过,让它更健壮很可能会降低性能。

关于Ruby - GCC 的依赖文件解析优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8353917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com