По большому счету производительность этой библиотеки должна быть приемлемой для большинства потребностей. Тем не менее, часто библиотеке приходится выбирать, быть ли точной или быстрой, и по умолчанию она выбирает точность, а не скорость. Если вы предпочитаете быстрые, а не полностью точные процедуры, обратитесь к разделу производительностидля получения информации и примеров о том, как этого достичь.
С точки зрения используемых алгоритмов, эта библиотека стремится использовать те же самые алгоритмы «лучшей породы», что и многие другие библиотеки: принципиальное отличие заключается в том, что эта библиотека реализована на C++, используя все механизмы абстракции, которые предлагает C++, где, как и большинство традиционных числовых библиотек, реализованы на C или FORTRAN. Традиционно языки, такие как C или FORTRAN, воспринимаются как более простые в оптимизации, чем более сложные языки, такие как C++, поэтому в некотором смысле эта библиотека обеспечивает хорошую проверку текущей технологии компилятора и «штраф за абстракцию» C++ по сравнению с другими языками.
Три самые важные вещи, которые вы можете сделать, чтобы обеспечить лучшую производительность из этой библиотеки:
- Включите оптимизацию компиляторов: разница между сборками «релиз» и «отладка» может легко составлятькоэффициент 20.
- Внимательно выбирайте компилятор:Различия в производительности до 8 разбыли обнаружены, например, между некоторыми компиляторами Windows.
- Отключите внутреннее использование<
longdouble
>, это уменьшит точность, но обычно даст 2-кратное ускорение на современном оборудовании / компиляторах x64.
Раздел производительностисодержит больше информации о производительности этой библиотеки, что вы можете сделать, чтобы настроить ее, и как эта библиотека сравнивается с некоторыми другими альтернативами с открытым исходным кодом.