Не сильно оптимизировано, но немного быстрее (около 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 \
будет ошибочно сопоставлено.Однако повышение его надежности, скорее всего, приведет к снижению производительности.