В отношении бита оптимизации возможен только "общий" тип ответа, поскольку реализации не требуется для работы каким-либо конкретным образом, если он работает в условиях, установленныхспецификация OpenAL.Тем не менее, вполне вероятно, что все реализации более или менее работают одинаково.
В общем случае alSourcei
/ alSourcef
включает, по крайней мере, вызов функции, такой как GetContextSuspended
, что включает доступ к локальному хранилищу потока ивход / выход из критической секции, а также оператор switch
(это также означает переход по указателю на функцию, эквивалентный, возможно, не кешированному адресу на странице, возможно, вне ядра, и, вероятно, тратит впустую одну запись в кэше TLB).
alSourcei
далее необходимо выполнить потокобезопасное увеличение счетчика ссылок и выделить / добавить новый узел списка в список буферов источника, что означает что-то на порядок величины вызова malloc
хотя бы один раз.
Установка AL_GAIN
и AL_PITCH
как таковая является практически бесплатной операцией.Он устанавливает значение и помечает источник как обновленный, поэтому поток микшера контекста знает, что что-то изменилось при смешивании следующего временного среза.В худшем случае, если параметры являются недопустимыми, alSourcef
необходимо установить последний код ошибки.
Поскольку удаление вызовов на alSourcef
, конечно, позволит избежать некоторых ненужных вызовов, и поскольку вы говорите, чтонет никаких шансов, что значения могут быть чем-то иным, кроме 1.0, на самом деле нет никаких оснований для когда-либо касаться их вообще, поскольку это значение по умолчанию согласно спецификации.
Но ... есливы ожидаете заметного ускорения от удаления этих вызовов, вы, вероятно, будете разочарованы (если их не будет несколько сотен тысяч в секунду).