1

2つのオーディオ(.WAV PCM)ファイル(いくつかの計算が含まれる)を混合するPHP-CLIスクリプトを作成したので、PHPは、で数千(数百万ではないにしても)のサンプルを処理しunpack()、それらで計算を行い、で保存する必要がありpack()ます。

タイトルが示すように、スクリプトが10秒のオーディオ出力を生成するのに30秒の処理時間を必要とするため、ミキシングの方法などに関する実際の情報は必要ありません。このプロセスを高速化する可能性を探しています。

私が試したこと:

  • オーディオファイルをメモリにキャッシュし、/substr()の代わりにを使用して処理します。パフォーマンスの向上:3秒。fseek()fread()
  • 出力ファイルを5000サンプルのチャンクで書き込みます。パフォーマンスの向上:10秒。

これらの最適化の後、10秒のオーディオ出力で約17秒の処理時間になりました。私を悩ませているのは、他のツールが2つのファイルをリアルタイムで、またはさらに高速にミキシングするなどの単純なオーディオ操作を実行できることです。

私が持っていたもう1つのアイデアは並列化でしたが、発生する追加の問題(フォーク/スレッドの正しいシーク位置の計算など)のためにそれを控えました。

それで、私は何かを見逃していますか、それともこれはPHP-CLIスクリプトにとって実際に良いパフォーマンスですか?

4

1 に答える 1

0

これについての皆さんの意見に感謝します。

私はC++で物事を書き直し、1秒以内に上記のアクションを実行できるようになりました。

速度の違いがこれほど大きいとは思ってもみませんでした(コンパイルされたアプリケーションは約40倍高速です)。

于 2012-03-30T09:42:14.043 に答える