On Mon, Mar 20, 2006 at 12:08:35AM +0300, Sergey N. Yatskevich wrote: > Прикольно, а для меня вот необходимость такого патча НЕ очевидна. Сергей, похоже что вы первый, кто усомнился во вредности unused direct dependencies. Лишние библиотеки, несомненно, замедляют запуск и увеличивают потребность в памяти. Ненужные явные зависимости в ELFах не всегда приводят к загрузке лишних библиотек при запуске, хотя это зачастую и происходит. Если в случае с gdm этого не происходит, то я, конечно, очень рад. И, наконец, ненужные явные зависимости в ELFах очень часто приводят к избыточным зависимостям между пакетами, и этого, конечно, нужно избегать. Если нужно, я могу рассказать подробнее, почему. > Я ещё раз повторяю, что помимо абстрактной "красоты" я никакой реальной > пользы для работы данной конкретной программы не вижу (ни скорость > работы gdm не увеличилась ни количество занимаемой им памяти не > уменьшилось). А вот у меня работы прибавилось (при том, что я пока > никак не могу заставить totem 1.4 нормально работать с libxine). > Так что же улучшится, с точки зрения _пользователя_ gdm, от приложения > патча "исправляющего" сборку? > > P.S. а вот интересно, кто-нибудь собирал статистику о реальном выигрыше > от применения --as-needed. Ну там программы такие-то грузятся и > работают настолько-то быстрее и кушают на столько-то меньше > памяти. Я так понимаю, что именно для этого всё и затевалось. > или я неправильно понял цель всей этой эпопеи. Конечно, польза в каждом случае своя, усреднять её толку мало. Для запуска gdm-binary из gdm-2.14.0-alt1 я её измерил стандартным методом: gdm-binary, слинкованный без --as-needed: $ ldd -u /usr/sbin/gdm-binary |fgrep -c /lib 19 $ time sh -c 'for i in `seq 3000`; do /usr/sbin/gdm-binary --version >/dev/null; done' 39.84user 17.85system 0:57.83elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (2532360major+539053minor)pagefaults 0swaps gdm-binary, слинкованный c --as-needed: $ ldd -u /usr/sbin/gdm-binary |fgrep -c /lib 10 $ time sh -c 'for i in `seq 3000`; do /usr/sbin/gdm-binary --version >/dev/null; done' 38.02user 19.16system 0:55.03elapsed 103%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (2535360major+539073minor)pagefaults 0swaps Погрешность измерения выглядит так: $ time sh -c 'for i in `seq 3000`; do :; done' 0.01user 0.01system 0:00.02elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (361major+148minor)pagefaults 0swaps Таким образом, выигрыш в elapsed CPU составляет: (57.83-55.03)*100%/57.83 т.е примерно 4.8% Я надеюсь, что моя точка зрения теперь выглядит достаточно аргументированной. -- ldv