Что заставляет мою сборку SCons занимать так много времени? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть SConscript , который создает цели с использованием утилит m4 и sed , включенных в Cygwin .

В целом, сборка занимает около 42 секунд, чтобы построить 16 целей из 8 источников, но та же самая сборка занимает только Сделать около 4 секунд!Это десятикратная разница во времени для довольно простой сборки!Я знаю, что SCons должен проходить через интерпретатор Python , поэтому, конечно, он не будет таким же быстрым, как собственный исполняемый файл, такой как Make , но все же яЯ должен предположить, что с такой базовой сборкой, как моя, я должен делать что-то действительно глупое, чтобы видеть такую ​​огромную разницу во времени.Любые идеи или предложения?

Основываясь на некоторых предложениях в комментариях, я заменил свой собственный m4 строитель на SCons встроенный, и я избавилсяиз sed один всего лишь для уменьшения числа потенциальных причин, и общее время сборки теперь сокращено до 22 секунд.Теперь вы можете увидеть всего моего кода ниже:

SConstruct :

env = DefaultEnvironment(tools=['m4'])
env['ENV']['PATH'] = ['C:/cygwin/bin']
SConscript('sources/SConscript', exports = 'env', variant_dir='build', duplicate = 0,) 

sources \ SConscript :

from ntpath import basename # Gets a file's basename from it's pathname.
Import('env')
M4FLAGS = '-DVV_SUBDERIVATIVE_NAME=5777C -DM4_USER_MODE_CONFIGURATION=true'
for file in Glob("*.xdm"):
    env.M4(target=basename(str(file))+'.orig', source=file, M4FLAGS=M4FLAGS)
...