[FFmpeg-devel] [RFC] New build system

Michael Niedermayer michael at niedermayer.cc
Mon Jun 18 21:18:50 EEST 2018


On Mon, Jun 18, 2018 at 06:52:18PM +0200, Nicolas George wrote:
> Tomas Härdin (2018-06-18):
> > Others have mentioned this already, but it bears repeating: the build
> > (make) isn't what's so slow, configure is. I went ahead and did some
> > profiling on it based on the StackOverflow thread that pops up when one
> > Web-searches "bash profiling" [1]. I went with what the second guy in
> > there says, because the first method eventually invokes the OOM killer.
> 
> Before that, I suspect it would have been interesting to test a
> configure from two years ago, and bissecting if it happens to be much
> faster.

The speed of configure declined very significantly over time, here are some
quick tests, not full bisects:

but theres another point which i have not seen anyone make but maybe i missed
it.
If changes which decrease speed go in unhindered and without correction then no
system, not a custom one, no meson no autotools, no cmake is guranteed to
prevent such speed decline.
Of course some of the decline will be due to added features and the added tests
they need.

also the speed seems worse with bash so anyone wanting a quick fix, do not use
bash for configure.

(note /bin/sh is dash here on my ubuntu box, and that is used by default i think)

master:
bash ./configure ; time bash ./configure
real            0m56.345s
user            0m43.532s
sys             0m15.668s

./configure ; time ./configure
real            0m15.788s
user            0m8.469s
sys             0m9.677s

dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf ; time dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf
real            0m13.982s
user            0m7.591s
sys             0m8.693s


release/4.0:
bash ./configure ; time bash ./configure
real            0m56.337s
user            0m43.207s
sys             0m15.988s

./configure ; time ./configure
real            0m15.704s
user            0m8.352s
sys             0m9.713s

dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf ; time dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf
real            0m13.966s
user            0m7.414s
sys             0m8.877s


release/3.4:
bash ./configure ; time bash ./configure
real            0m21.324s
user            0m18.041s
sys             0m3.693s

./configure ; time ./configure
real            0m6.756s
user            0m4.158s
sys             0m2.822s

dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf ; time dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf
real            0m4.849s
user            0m2.887s
sys             0m2.148s


release/3.0:
bash ./configure ; time bash ./configure
real            0m16.955s
user            0m13.770s
sys             0m3.485s

./configure ; time ./configure
real            0m6.006s
user            0m3.616s
sys             0m2.602s

dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf ; time dash ./configure --cc='ccache gcc' --tempprefix=/home/michael/fftmpconf
real            0m4.269s
user            0m2.401s
sys             0m2.034s


release/2.0:
bash ./configure ; time bash ./configure
real            0m11.050s
user            0m8.855s
sys             0m2.465s

./configure ; time ./configure
real            0m4.443s
user            0m2.622s
sys             0m1.983s


release/1.0:
bash ./configure ; time bash ./configure
real            0m14.104s
user            0m10.045s
sys             0m4.852s

./configure ; time ./configure
real            0m4.712s
user            0m2.250s
sys             0m2.761s


release/0.7:
bash ./configure ; time bash ./configure
real            0m9.441s
user            0m6.607s
sys             0m3.363s

./configure ; time ./configure
real            0m3.346s
user            0m1.583s
sys             0m1.960s


release/0.6:
bash ./configure ; time bash ./configure
real            0m5.679s
user            0m3.431s
sys             0m2.674s

./configure ; time ./configure
real            0m2.670s
user            0m1.276s
sys             0m1.556s


release/0.5:
bash ./configure ; time bash ./configure
real            0m5.107s
user            0m3.310s
sys             0m2.076s

./configure ; time ./configure
real            0m1.949s
user            0m0.893s
sys             0m1.190s


[...]


-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180618/c87ba0ed/attachment.sig>


More information about the ffmpeg-devel mailing list