Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Динамическая и статическая компиляция под Linux/Unix/Solaris и т.п

4
19 января 2005 года
mike
3.7K / / 01.10.2002
Вот задался вопросом, что лучше использовать.

Какая программа будет работать быстрее?

Ведь по идее, если размер программы увеличился с 60Kb до 160Kb то читать с винта сильно дольше ее не будут, а вот при динамической компиляции нужно все библиотеки подгрузить и т.п.

Да и забыть можно про "libstc++.so.5 not found"

Вот такой фундаментальный вопрос :)
10
19 января 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by mike
Ведь по идее, если размер программы увеличился с 60Kb до 160Kb то читать с винта сильно дольше ее не будут, а вот при динамической компиляции нужно все библиотеки подгрузить и т.п.


А если libstc++.so.5 уже загружен для другой программы, разве его код не будет шариться?

4
20 января 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by smartsoft

А если libstc++.so.5 уже загружен для другой программы, разве его код не будет шариться?



Я бы тоже так подумал, но эта библиотека содержит не thread safe код. Таким образом, она должна грузится отдельно или форкаться. И то и то долго.

5.4K
06 января 2007 года
Svyatozar
221 / / 11.09.2006
Цитата: mike
...но эта библиотека содержит не thread safe код. Таким образом, она должна грузится отдельно или форкаться.

Вовсе нет. Фриман прав, код общих библиотек хранится в ОЗУ только в одном экземпляре.

21K
06 января 2007 года
kerdan
18 / / 27.12.2006
код-то не thread safe, но юзаться он будет в ОДНОМ экземпляре,
правда ПОКА какой-нибудь из процессов не юзанет оттуда ф-ю,
которая будет писать в глобальное пространство библиотеки.
А до этого момента все будет красиво.

На самом деле фундаментальный вопрос...
Но в итоге, я считаю - вопрос вкуса и интуиции.

Я в таких случаях рассуждаю так - если это консольная тулза или
что-то в этом роде, т.е. запустил у себя на машине, че-то она
сделала и все. Тогда динамическая линковка.

Если это демон, причем критичный к времени исполнения, ну, например,
что-то сродни веб-серверу... - то это статика, кончено. Так оптимальнее.

Хотя опять же - рассуждения и только.
Если надо докопаться до сути, то бурум конкретнуй вещь и профилируем
в обоих случаях, ну а там уже будет пища для рассуждений.
5.4K
07 января 2007 года
Svyatozar
221 / / 11.09.2006
Цитата: kerdan
код-то не thread safe, но юзаться он будет в ОДНОМ экземпляре,
правда ПОКА какой-нибудь из процессов не юзанет оттуда ф-ю,
которая будет писать в глобальное пространство библиотеки.
А до этого момента все будет красиво.


?? Какое еще "глобальное пространство библиотеки"?? Библиотека - не процесс, а разделяемый код. В ней все адреса относительные, поэтому она просто проецируется операционной системой в адресное пространство процесса, а физический адрес вычисляется используя смещение, свое для каждого процесса. Это реализовано на уровне процессора, используя скрытые от пользователя регистры.

10
07 января 2007 года
Freeman
3.2K / / 06.03.2004
Угу. По-моему, некто перепутал понятия сервера и библиотеки и начал решать несуществующую проблему.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог