Я предполагаю, что это способ улучшить работу приложений, которые его вообще не используют. Вот мои мысли по этому поводу.
Операционные системы x86 (и, я полагаю, другие) должны сохранять состояние FPU при переключении контекста. Однако большинство операционных систем заботятся о сохранении / восстановлении этого состояния только после того, как приложение пытается использовать FPU в первый раз.
В дополнение к этому, в математической библиотеке, вероятно, есть какой-то базовый код, который установит FPU в нормальное базовое состояние при загрузке библиотеки.
Итак, если вы вообще не связываете какой-либо математический код, ничего из этого не произойдет, поэтому ОС вообще не нужно сохранять / восстанавливать какое-либо состояние FPU, что делает переключение контекста немного более эффективным.
Только предположение.
РЕДАКТИРОВАТЬ: в ответ на некоторые комментарии та же базовая предпосылка по-прежнему применяется к случаям, не связанным с FPU (предпосылка заключалась в том, чтобы приложения, которые не использовали libm, работали немного лучше).
Например, если есть программный FPU, который, вероятно, был на заре C. Тогда разделение libm могло бы предотвратить ненужное связывание большого количества большого (и медленного, если оно использовалось) кода.
Вдобавок, если доступно только статическое связывание, то применяется аналогичный аргумент, что он сократит размеры исполняемых файлов и время компиляции.
person
Evan Teran
schedule
23.06.2009