php 노트:규칙 적 인 큰 파일 읽 기와 쓰기 분석

요 며칠 동안 하 나 를 만 들 고 있 습 니 다.PHP 읽 기 줄 이 많은 파일(약 수백 만 줄)을 연구 하고 있 습 니 다.효율 적 인 문 제 를 고려 하여 간단 한 연 구 를 진행 하 였 습 니 다.총 결 은 다음 과 같 습 니 다.
첫 번 째.file()함수 의 효율 문제.
file()함수 의 효율 은 매우 낮다.만약 규칙 적 인 파일 이 라면,예 를 들 어 줄 마다 해당 하 는 데 이 터 를 사용한다.그러면 되도록 file()함수 로 하지 마라.
file 사용 가능get_contents()그리고 explode 로 자 르 면 효율 이 3 분 의 1 이 빨 라 집 니 다.
예 를 들 어:
파일 스타일 은 다음 과 같 습 니 다:
11111
22222
33333
44444
55555
.....
nnnnnnnnnnn
file($file)로 읽 으 면 오래 걸 립 니 다.
다음 방법 으로 explode(",file")를 사용 할 수 있 습 니 다.get_contents($file));효율 이 훨씬 빨 라 질 거 야.
두 번 째,배열 의 옮 겨 다 니 는 방식.
데 이 터 는 이미 배열 에 읽 혔 습 니 다.다음은 옮 겨 다 니 는 것 입 니 다.
제 가 필요 한 것 은 배열 에 값 이 있 는 지 확인 하 는 것 입 니 다.예 를 들 어 44444 가 배열 에 있 는 지 확인 하 는 것 입 니 다.먼저 생각 나 는 것 은 in 입 니 다.array()
그러나 실험 을 해 보 니 효율 이 매우 낮 았 다.그래서 다른 사람의 코드 를 참고 하여 방법 을 생각 해 냈 다.배열 을 뒤 집어 서 모든 값 이 1 이 되 었 다.원래 의 값 이 색인 이 되 었 다.그러면 내 가 if 에($arr[색인]=1)만 쓰 면 판단 할 수 있다.과연 효율 이 훨씬 높다.
배열 을 옮 겨 다 니 는 과정 에서 배열 의 크기 가 매우 크 고 배열 의 데 이 터 를 모두 사용 할 수 있 는 것 이 아니라면 옮 겨 다 니 는 배열 을 추출 하 는 것 이 좋 습 니 다.그러면 많은 효율 을 높 일 수 있 습 니 다.
제3 조,배열 의 저장.
계 산 된 데 이 터 를 저장 합 니 다.한 파일 에 존재 합 니 다.세 가지 방법 을 고려 했 습 니 다.하 나 는 phop 파일 로 직접 쓰 는 것 입 니 다.하 나 는 serialize 이 고 하 나 는 json 문자열 입 니 다.
첫 번 째 방식
파일 에 직접 쓰기PHP 로 저장
필요 할 때 직접 require 들 어 와.
두 번 째 방식 입 니 다.변 수 를 serialize 하고 fileput_contents()파일 에 들 어 갑 니 다.사용 할 때 unserialize 는 괜 찮 습 니 다.
세 번 째 방식 은 두 번 째 방식 과 유사 하 다.단지 제 이 슨 꼬치 로 썼 을 뿐이다.
테스트 를 통 해 두 번 째 효율 이 가장 높 은 것 을 발견 했다.세 번 째 효율 은 두 번 째 효율 과 막상막하 이다.첫 번 째 효율 은 가장 느리다.내 가 예상 한 것 과 차이 가 매우 크다.정말 크게 놀 랐 다.

좋은 웹페이지 즐겨찾기