포인터 배열을 반복하고 각 항목에 대해 (MySQL 데이터베이스 또는 플랫 파일에서 가져온) 해당 데이터를 가져와야하는 PHP 함수를 작성했습니다. 잠재적으로 수천 및 수천 번의 반복이있을 수 있으므로이를 최적화하는 아이디어가 있습니까?PHP 루프 성능 최적화
첫 번째 생각은 내가 작업하는 캐시 된 데이터의 정적 배열을 갖는 것이었고 모든 수정은 캐시 된 배열을 변경 한 다음 디스크에 플러시 할 수있었습니다. 그러나 1000 개가 넘는 항목의 루프에서는 배열에 약 30 개만 유지하면 쓸모가 없습니다. 각 항목은 너무 크지 않지만 메모리에있는 1000 개 이상의 항목이 너무 많아서 디스크 저장 장치가 필요합니다.
데이터는 단지 gzipped 직렬화 된 개체입니다. 현재 데이터를 저장하는 데 데이터베이스를 사용하고 있지만 플랫 파일이 더 빠를 것이라고 생각합니다. (동시성 문제는 신경 쓰지 않고 구문 분석 할 필요가 없습니다. 압축을 풀고 병합하지 않아도됩니다.) 나는 이미 (DB 연결을 줄이기 위해) 5 개의 항목을 한꺼번에 가져 와서이 캐시에 저장하는 커스텀 반복자를 가지고있다. 그러나 다시 한번, 수천을 반복 할 필요가있을 때 30의 캐시를 사용하면 상당히 쓸모가 없습니다.
기본적으로 나는이 많은 항목을 신속하게 반복 할 수있는 방법이 필요합니다.
나는 그래서 신경 세포가 그들의 데이터의 일부에 영향을 저장하는 객체 일부는 다음 중 하나에 갈 반복 할 필요가 신경 네트워크를 쓰고 있어요 ... 자신을 명확하게 설명하려고하여야을 memcached를하는 PHP API를가 등 1000+ 뉴런 나중에. 그런 다음 다시 역방향으로 반복해야합니다 (역 전파라고 함). 최상의 솔루션은 메모리와 IO 액세스 사이의 매체를 찾는 것이라고 생각합니다. 한 번에 100 개의 객체를로드하면 IO가 적지 만 메모리가 늘어납니다. – Louis