Ruby에서 거대한 텍스트 파일을 읽는 가장 효율적인 방법은 무엇입니까? 10 행 89 바이트/행. 한 방법이 다른 방법보다 훨씬 낫습니까?Ruby에서 가장 효율적인 입력 방법
4
A
답변
4
나는 텍스트 파일을로드하는 좋은 방법이 무엇인지 알기 위해 잠시 벤치 마크를했다. 가장 빠른 방법은 텍스트 블록 단위로 읽은 다음 String.lines를 사용하여 반복하는 것입니다.
IO.foreach(ARGV.shift) do |li|
print li
end
time ruby test.rb root.mbox > /dev/null
#
# real 0m3.949s
# user 0m3.709s
# sys 0m0.182s
내가 타이밍에서 화면 I/O를 제거을/dev/null로 덤프 :
기준으로 188,593,869 바이트 텍스트 파일 읽기. 대신에 라인별로 독점적으로 읽는
, 다음 큰 덩어리에로드 라인을 반복 : 0.5 초 절약의
File.read(ARGV.shift).lines do |l|
print l
end
time ruby test.rb root.mbox > /dev/null
real 0m3.492s
user 0m3.281s
sys 0m0.209s
. 또한 188MB의 데이터를 빨아 들여서 더 큰 파일을 가지고 있으면 확장이 잘되지 않습니다. 좋은 점은 전체 파일을로드하기 위해 내가 말한 것인데, read()
을 사용하거나 읽기 크기를 제한하도록 알려주는 것입니다.
여기에 참조 용 텍스트 파일에 대한 wc
에서 청소 출력입니다 :
lines: 2,465,369
words: 26,466,463
bytes: 188,593,869
+0
Windows에서'File.read'는 [매우 느립니다] (http://phrogz.net/slow-file-reads-on-windows-ruby-1.9)입니다. 바이너리 읽기 모드를 강요하기 위해서는'File.open ('foo', 'rb', & : read)'가 더 낫다. (그러나 가능한'\ r \ n '쌍을 스스로 처리해야한다. – Phrogz
관련 문제
- 1. Ruby에서 루프를 구현하는 가장 스마트하고 효율적인 방법
- 2. 큐를 모니터링하는 가장 효율적인 방법
- 3. 링크 테스트를위한 가장 효율적인 방법
- 4. 가장 효율적인 방법 (두 가지 방법)
- 5. 가장 효율적인 방법은
- 6. Ruby에서 테이블을 구문 분석하는 가장 좋은 방법
- 7. 가장 효율적인 방법 ... 고유 한 무작위 문자열
- 8. 데이터베이스에 지오 코딩을 저장하는 가장 효율적인 방법
- 9. 가장 효율적인 실버 라이트 드로잉 방법
- 10. 하나의 char을 CharSequence로 변환하는 가장 효율적인 방법
- 11. 마우스 스무딩을 구현하는 가장 효율적인 방법
- 12. PNG를 HTTP 응답으로 생성하는 가장 효율적인 방법
- 13. 가장 효율적인 psql 데이터베이스 이동 방법
- 14. Java에서 TCP 스트림을 읽는 가장 효율적인 방법
- 15. 많은 양의 데이터를 내보내는 가장 효율적인 방법
- 16. 이 PHP 스크립트를 수행하는 가장 효율적인 방법
- 17. MySQL에서 IP 주소를 저장하는 가장 효율적인 방법
- 18. 클릭 수를 계산하는 가장 효율적인 방법
- 19. 배열의 빈 값을 대체하는 가장 효율적인 방법
- 20. Windows Mobile에서 .NET IPC의 가장 효율적인 방법
- 21. 문자열에서 데이터를 가져 오는 가장 효율적인 방법
- 22. 고유 한 키 만들기 - 가장 효율적인 방법
- 23. 스택을 반전하여 ArrayList에 추가하는 가장 효율적인 방법
- 24. 폴리곤 외곽선을 그리는 데 가장 효율적인 방법
- 25. 이미지의 작은 표현을로드하는 가장 효율적인 방법
- 26. 웹 사이트에서 콘텐츠를 예약하는 가장 효율적인 방법
- 27. 부모/자식을 처리하는 가장 효율적인 방법
- 28. 웹 크롤러를 감지하는 가장 효율적이고 효율적인 방법
- 29. ASPX 웹 요청을 종료하는 가장 효율적인 방법
- 30. jQuery에서 선택된 요소를 재사용하는 가장 효율적인 방법
당신은 라인 - 라인 또는 어떻게 처리 할 말은? – tokland
예, 줄 단위로 – mbm