Ruby의 Time 클래스에 CSV 데이터를 읽는 가장 빠른 방법

FX- 키린

나는 시계열 Forex csv 데이터 (100MB 이상)를 Ruby 프로그램으로 구문 분석하려고했습니다. 그러나 나는 속도 문제를 다루기가 어렵다.

csv 데이터는 다음과 같습니다. "Date", "Time", "Open", "Close", "High", "Low", "Volume"이 순서대로 포함됩니다.

2007.01.02,07:00,119.01,119.01,119.01,119.01,8
2007.01.02,07:01,119.01,119.01,119.01,119.01,8
2007.01.02,07:02,119.01,119.01,119.01,119.01,8
2007.01.02,07:03,119.01,119.02,119.01,119.02,8
2007.01.02,07:04,119.02,119.03,119.01,119.02,8

가져 오기 위해 스크립트를 작성했습니다. CSV 파일을 구문 분석하는 것이 너무 느려서 CSV 라이브러리 사용을 피했습니다. (예 : CSV.parse CSV.foreach)

IO.foreach(csv) do |line|
  res = line.split(",")
  Time.parse("%s %s"%[res[0], res[1]])
  res[2].to_f
  res[3].to_f
  res[4].to_f
  res[5].to_f
  res[6].to_i
end

이 프로그램을 실행했을 때 Time.parse가 너무 느 렸습니다. csv 파일에는 250 만 줄이 있으므로 250 만 번을 겪습니다.

비교 결과는 다음과 같습니다.

  • Time.parse 사용 : 160 초.
  • Time.local 사용 : 56 초. (수정 된 csv 데이터)
  • Time.at : 23 초. (수정 된 csv 데이터)
  • 시간 분석없이 : 단 10 초.

Time.parse를 주석 처리했을 때 훨씬 빨라졌습니다. 나는 Time.now와 Time.new가 빠르다는 것을 알고 있습니다.

누구든지 좋은 아이디어를 가질 수 있습니까? 프로그램이 훨씬 빨라지면 루 비용 C 라이브러리를 만드는 것을 주저하지 않습니다.

감사합니다.

환경

  • 윈도우 7 x64
  • 루비 2.0.0p247 (2013-06-27) [i386-mingw32]

내 프로젝트를 Github에 업로드했습니다. https://github.com/pgkireek/ruby_trade

로익 포레-라크 루아

대신 정규식과 함께 사용할 수있는 것이 있습니다. 모든 그룹을 일치시키고 Time.new.

IO.foreach(csv) do |line|
    res = line.scan /((\d+)\.(\d+)\.(\d+)|(\d+):(\d+)|(\d+)\.(\d+)|\d+)/
    puts Time.new res[0][1], res[0][2], res[0][3], res[1][4], res[1][5]

    puts res[2][0].to_f
    puts res[3][0].to_f
    puts res[4][0].to_f
    puts res[5][0].to_f
    puts res[6][0].to_i
end

확실하지는 않지만 분할 대신 정규식을 사용하면 훨씬 빠를 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Laravel에 데이터를 삽입하는 가장 빠른 방법

분류에서Dev

Python에서 클래스 인스턴스의 파생 된 UserList를 생성하는 가장 빠른 방법

분류에서Dev

네트워크 데이터를 읽는 가장 빠른 방법?

분류에서Dev

웹 서버로 데이터를 읽는 가장 빠른 방법

분류에서Dev

Gmail에서 새 이메일을 읽는 가장 빠른 방법

분류에서Dev

파이썬에서 벡터의 차이를 찾는 가장 빠른 방법

분류에서Dev

VB.Net의 데이터 테이블에서 콤보 상자를 채우는 가장 빠른 방법

분류에서Dev

CSV 파일 자바를 읽을 수있는 가장 빠른 방법

분류에서Dev

PHP : 데이터베이스 결과를 해시하는 가장 빠른 방법?

분류에서Dev

클래스의 다른 인스턴스간에 데이터 속성을 복사하는 가장 좋은 방법

분류에서Dev

데이터베이스에서 데이터를 검색하는 가장 빠른 방법

분류에서Dev

Android-SQLite 데이터베이스에서 데이터를 검색하는 가장 빠른 방법

분류에서Dev

Postgres 용 C #에서 테이블 필드의 데이터베이스 데이터 유형을 얻는 가장 빠르고 빠른 방법은 무엇입니까?

분류에서Dev

R의 행렬에서 선 그래프를 그리는 가장 빠른 방법

분류에서Dev

.csv 파일에서 테이블 형식 데이터를로드하는 가장 빠른 방법은 무엇입니까?

분류에서Dev

C ++로 데이터를로드하는 가장 빠른 방법

분류에서Dev

SQL 데이터베이스 (Azure)에서 최대 날짜를 가져 오는 가장 빠른 방법

분류에서Dev

로컬 Neo4j 데이터베이스의 모든 노드에서 단일 필드를 가져 오는 가장 빠른 방법

분류에서Dev

데이터베이스에서 페이지를 계산하는 가장 빠른 방법

분류에서Dev

DataTable의 데이터를 조건부로 업데이트하는 가장 빠른 방법은 무엇입니까?

분류에서Dev

zip 폴더의 csv 파일에서 읽고 데이터베이스의 csv 파일에서 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

Pandas 데이터 프레임에서 포인트 간의 최단 (유클리드) 거리를 계산하는 가장 빠른 방법

분류에서Dev

다른 클래스의 Tkinter 목록 상자에 데이터를 추가하는 방법은 무엇입니까?

분류에서Dev

문서 또는 PDF에서 스프레드 시트로 데이터를 추출하는 가장 빠른 방법

분류에서Dev

Google Apps Script, 외부 스프레드 시트에서 데이터를 검색하는 가장 빠른 방법

분류에서Dev

스칼라에서 데이터를 인코딩 및 디코딩하는 가장 빠른 방법

분류에서Dev

큰 래스터에서 산술을 수행하는 가장 빠른 방법

분류에서Dev

Component의 소스를 찾는 가장 빠른 방법은 무엇입니까?

분류에서Dev

2 개의리스트 객체를 비교하는 가장 빠른 방법

Related 관련 기사

  1. 1

    Laravel에 데이터를 삽입하는 가장 빠른 방법

  2. 2

    Python에서 클래스 인스턴스의 파생 된 UserList를 생성하는 가장 빠른 방법

  3. 3

    네트워크 데이터를 읽는 가장 빠른 방법?

  4. 4

    웹 서버로 데이터를 읽는 가장 빠른 방법

  5. 5

    Gmail에서 새 이메일을 읽는 가장 빠른 방법

  6. 6

    파이썬에서 벡터의 차이를 찾는 가장 빠른 방법

  7. 7

    VB.Net의 데이터 테이블에서 콤보 상자를 채우는 가장 빠른 방법

  8. 8

    CSV 파일 자바를 읽을 수있는 가장 빠른 방법

  9. 9

    PHP : 데이터베이스 결과를 해시하는 가장 빠른 방법?

  10. 10

    클래스의 다른 인스턴스간에 데이터 속성을 복사하는 가장 좋은 방법

  11. 11

    데이터베이스에서 데이터를 검색하는 가장 빠른 방법

  12. 12

    Android-SQLite 데이터베이스에서 데이터를 검색하는 가장 빠른 방법

  13. 13

    Postgres 용 C #에서 테이블 필드의 데이터베이스 데이터 유형을 얻는 가장 빠르고 빠른 방법은 무엇입니까?

  14. 14

    R의 행렬에서 선 그래프를 그리는 가장 빠른 방법

  15. 15

    .csv 파일에서 테이블 형식 데이터를로드하는 가장 빠른 방법은 무엇입니까?

  16. 16

    C ++로 데이터를로드하는 가장 빠른 방법

  17. 17

    SQL 데이터베이스 (Azure)에서 최대 날짜를 가져 오는 가장 빠른 방법

  18. 18

    로컬 Neo4j 데이터베이스의 모든 노드에서 단일 필드를 가져 오는 가장 빠른 방법

  19. 19

    데이터베이스에서 페이지를 계산하는 가장 빠른 방법

  20. 20

    DataTable의 데이터를 조건부로 업데이트하는 가장 빠른 방법은 무엇입니까?

  21. 21

    zip 폴더의 csv 파일에서 읽고 데이터베이스의 csv 파일에서 데이터를 저장하는 방법은 무엇입니까?

  22. 22

    Pandas 데이터 프레임에서 포인트 간의 최단 (유클리드) 거리를 계산하는 가장 빠른 방법

  23. 23

    다른 클래스의 Tkinter 목록 상자에 데이터를 추가하는 방법은 무엇입니까?

  24. 24

    문서 또는 PDF에서 스프레드 시트로 데이터를 추출하는 가장 빠른 방법

  25. 25

    Google Apps Script, 외부 스프레드 시트에서 데이터를 검색하는 가장 빠른 방법

  26. 26

    스칼라에서 데이터를 인코딩 및 디코딩하는 가장 빠른 방법

  27. 27

    큰 래스터에서 산술을 수행하는 가장 빠른 방법

  28. 28

    Component의 소스를 찾는 가장 빠른 방법은 무엇입니까?

  29. 29

    2 개의리스트 객체를 비교하는 가장 빠른 방법

뜨겁다태그

보관