  Numerous software systems are highly configurable through run-time options,
such as command-line parameters. Users can tune some of the options to meet
various functional and non-functional requirements such as footprint, security,
or execution time. However, some options are never set for a given system
instance, and their values remain the same whatever the use cases of the
system. Herein, we design a controlled experiment in which the system's
run-time configuration space can be specialized at compile-time and
combinations of options can be removed on demand. We perform an in-depth study
of the well-known x264 video encoder and quantify the effects of its
specialization to its non-functional properties, namely on binary size, attack
surface, and performance while ensuring its validity. Our exploratory study
suggests that the configurable specialization of a system has statistically
significant benefits on most of its analysed non-functional properties, which
benefits depend on the number of the debloated options. While our empirical
results and insights show the importance of removing code related to unused
run-time options to improve software systems, an open challenge is to further
automate the specialization process.
