Я написал скрипт PHP-CLI, который смешивает два аудиофайла (.WAV PCM) (с некоторой математикой), поэтому PHP должен хрустнуть через тысячи (если не миллионы) образцов с , сделать математику на них и сохранить их с pack()
.Возможности ускорения PHP-CLI-скрипта?
Теперь мне не нужна фактическая информация о том, как сделать микширование или что-то еще, как говорится в названии. Я ищу возможности ускорить этот процесс, так как скрипту требуется 30 секунд времени обработки, чтобы произвести 10 секунд аудио выход.
Вещи, которые я пытался:
- кэшевая аудиофайлы в памяти и хруста через с
substr()
вместоfseek()
/fread()
. Производительность: 3 секунды. - Запишите выходной файл в куски 5000 образцов. Производительность: 10 секунд.
После этих оптимизаций я закончил примерно 17 секунд обработки в течение 10 секунд аудиовыхода. Что меня беспокоит, так это то, что другие инструменты могут выполнять простые звуковые операции, такие как смешивание двух файлов в реальном времени или даже намного быстрее.
Еще одна идея, которую я имел, - это паралеллизация, но я воздержался от этого из-за дополнительных проблем, которые могут возникнуть (например, вычисления правильных позиций поиска для вилок/потоков и других связанных вещей).
Так я пропал без вести или это действительно хорошая производительность для скрипта PHP-CLI?
Первое, что вам нужно сделать, когда вы хотите «ускорить» или «увеличить производительность», - запустить профайлер, чтобы увидеть, какие части вашего кода занимают больше всего, а не делать несколько снимков в темноте. Кажется, вы уже определили некоторые из них, если вы запускаете профилировщик, возможно, вы найдете больше. Если это все еще не работает, то у каждого инструмента есть свой предел, и, возможно, вы нашли PHP. – netcoder
Производительность PHP всегда будет ... Я думаю, вежливое слово будет «отвратительным», для такого рода вещей. –
Возможно, вы можете попробовать переместить функции, которые выполняют редактирование, в программу на языке C и просто иметь php быть посредником :) – AntonioCS