1

두 개의 오디오 (.WAV PCM) 파일 (일부 수학 포함)을 혼합하는 PHP-CLI 스크립트를 작성하여 PHP가 unpack()의 수천 (수백만은 아닐지라도)을 거치지 않고 계산해야하고 수학을 수행하고 저장해야합니다 pack().PHP-CLI 스크립트의 속도를 높일 수 있습니까?

제목이 말했듯이, 스크립트가 10 초를 생성하는 데 30 초의 처리 시간을 필요로하기 때문에이 프로세스를 가속화 할 수있는 가능성을 찾고 있습니다. 오디오 출력. 메모리에

  • 를 캐시합니다 audiofiles 및 substr() 대신 fseek()/fread()로를 통해 위기 : 나는 시도

    것. 성능 향상 : 3 초.

  • 출력 파일을 5000 개의 샘플 청크로 씁니다. 성능 향상 : 10 초.

이러한 최적화 후에 나는 오디오 출력이 약 10 초인 약 17 초의 처리 시간을 보냈다. 다른 도구가 두 파일을 실시간 또는 훨씬 더 빠르게 혼합하는 것과 같은 간단한 오디오 작업을 수행 할 수 있다는 것은 저를 괴롭 힙니다.

필자가 생각한 또 다른 아이디어는 평행 정렬이지만, 포크/스레드 및 기타 관련된 것들에 대한 올바른 찾기 위치 계산과 같은 추가적인 문제로 인해이를 삼가고 있습니다.

그래서 나는 물건을 놓치고 있습니까? 아니면이 PHP-CLI 스크립트에 대해 실제로 좋은 성능입니까?

+0

"속도 향상"또는 "성능 향상"을 원할 때 가장 먼저해야 할 일은 프로파일 러를 실행하여 어둠 속에서 몇 발을 찍는 대신 코드의 어느 부분이 가장 오래 실행되는지 확인하는 것입니다. 이미 프로파일러 중 일부를 확인한 것 같습니다. 프로파일 러를 실행하면 더 많은 정보를 찾을 수 있습니다. 그래도 여전히 작동하지 않는다면, 모든 도구가 한계를 지니고 있으며 아마도 PHP를 발견했을 것입니다. – netcoder

+1

PHP 성능은 항상 계속 될 것입니다 ... 나는 공손한 단어가 그런 종류의 일에 대해 "가증스러운"것이라고 생각합니다. –

+3

아마도 편집을하는 함수를 C 프로그램으로 옮기고 PHP를 중개자로 만들려고 할 수 있습니다 :) – AntonioCS

답변

0

누구나 입력 해 주셔서 감사합니다.

나는 C++로 그 내용을 다시 썼으며, 이제는 1 초도 채 안되어 위의 동작을 수행 할 수 있습니다.

필자는 속도 차이가 거대한 (컴파일 된 응용 프로그램은 ~ 40X 빠름) 것으로 생각하지 않았습니다.

관련 문제