Я хотел бы улучшить производительность моей Динамическая связанная библиотека (DLL).Предварительно вычислить значения cos() и sin() в таблицах
Для этого я хочу использовать таблицы поиска по соз() и грех() как я использую их много.
Как я хочу максимальной производительности, я хочу создать таблицу от от 0 до 2PI, которая содержит полученные вычисления cos и sin.
Для хорошего результата с точки зрения точности, я думаю, таблицы 1 мб для каждой функции - хорошая сделка между размером и точностью.
Я хотел бы знать, как создавать и использовать эти таблицы без использования внешнего файла (так же, как это DLL): Я хочу сохранить все в одном файле.
Кроме того, я не хочу, чтобы вычислить грех и потому функция при запуске плагина: они должны быть вычислены один раз и поместить в стандартный вектор.
Но как это сделать в C++?
EDIT1: код от jons34yp очень хорош для создания векторных файлов.
Я сделал небольшой тест и обнаружил, что если вам нужна хорошая точность и хорошая скорость, вы можете сделать 250000 единиц векторного и линейного интерполята между ними, у вас будет максимальная ошибка 7.89E-11 (!), И это самый быстрый между всеми аппроксимаций я пытался (и это больше, чем 12x быстрее, чем грех() (13,296 х быстрее точно)
http://stackoverflow.com/questions/4864866/cc-with-gcc-statically-add-resource-files-to-executable-library –
Вы могли бы напишите вспомогательную программу/скрипт, который будет генерировать таблицу в синтаксисе исходного кода на C++. – Angew
Профилированы ли вы и определили, что эти две функции действительно являются горячими точками в вашем коде? На современных процессорах они, как правило, довольно быстрые, и вы можете обнаружить, что решение на основе таблицы заканчивается медленнее и менее безопасно для кэша. –