1

Я написал скрипт PHP-CLI, который смешивает два аудиофайла (.WAV PCM) (с некоторой математикой), поэтому PHP должен хрустнуть через тысячи (если не миллионы) образцов с , сделать математику на них и сохранить их с pack().Возможности ускорения PHP-CLI-скрипта?

Теперь мне не нужна фактическая информация о том, как сделать микширование или что-то еще, как говорится в названии. Я ищу возможности ускорить этот процесс, так как скрипту требуется 30 секунд времени обработки, чтобы произвести 10 секунд аудио выход.

Вещи, которые я пытался:

  • кэшевая аудиофайлы в памяти и хруста через с substr() вместо fseek()/fread(). Производительность: 3 секунды.
  • Запишите выходной файл в куски 5000 образцов. Производительность: 10 секунд.

После этих оптимизаций я закончил примерно 17 секунд обработки в течение 10 секунд аудиовыхода. Что меня беспокоит, так это то, что другие инструменты могут выполнять простые звуковые операции, такие как смешивание двух файлов в реальном времени или даже намного быстрее.

Еще одна идея, которую я имел, - это паралеллизация, но я воздержался от этого из-за дополнительных проблем, которые могут возникнуть (например, вычисления правильных позиций поиска для вилок/потоков и других связанных вещей).

Так я пропал без вести или это действительно хорошая производительность для скрипта PHP-CLI?

+0

Первое, что вам нужно сделать, когда вы хотите «ускорить» или «увеличить производительность», - запустить профайлер, чтобы увидеть, какие части вашего кода занимают больше всего, а не делать несколько снимков в темноте. Кажется, вы уже определили некоторые из них, если вы запускаете профилировщик, возможно, вы найдете больше. Если это все еще не работает, то у каждого инструмента есть свой предел, и, возможно, вы нашли PHP. – netcoder

+1

Производительность PHP всегда будет ... Я думаю, вежливое слово будет «отвратительным», для такого рода вещей. –

+3

Возможно, вы можете попробовать переместить функции, которые выполняют редактирование, в программу на языке C и просто иметь php быть посредником :) – AntonioCS

ответ

0

Спасибо за вклад каждого на этом.

Я переписал вещь на C++ и теперь могу выполнить вышеуказанные действия менее чем за секунду.

Я бы никогда не подумал, что разница в скорости заключается в том, что огромное (скомпилированное приложение на 40 быстрее).