2013-11-15 2 views
1

나는 이런 종류의 문제가있다. 수천 개의 행을 가진 XLS를 생성 할 때 너무 많은 시간이 걸립니다.XLS를 생성 할 때 가장 빠른 라이브러리는 무엇입니까?

현재 저는 writeexcel gem을 사용하고 있습니다. 또한 acts_as_xls에 대해서도 알고 있지만 훨씬 빠르지는 않습니다 (대략 20 % 정도).

또 하나의 라이브러리 - https://github.com/splendeo/to_xls,하지만 내 경우에는 그렇지 않습니다 - 그래서 내가 XLS 생성기에 전달하는 개체 ActiveRecords되지 않습니다, 사용자 지정 SQL 쿼리를 사용합니다.

누군가 내게 이에 대한 조언을 해 줄 수 있습니까?

답변

0

CSV 기록의 속도에 관해서는 두 가지 주요 요소가 있습니다.

  1. 코드 오버 헤드.
  2. 데이터 세트의 크기.

당신에게 (2) 가장 큰 병목 현상이 될 것입니다. 그래서 필자의 첫 번째 권고는 작성된 줄 수를 줄이는 방법을 찾는 것입니다. 그러나, 나는 그것이 불가능하다고 생각할 것이다.

보석의 경우 일반적으로 많은 양의 오버 헤드가 있습니다. 이것은 보석이 최대한 일반화되고 가능한 한 많은 기능을 지원하기 때문에 발생합니다. 지루하고 시간이 많이 걸리는 작업을해야하는 경우 가끔은 자신 만의 코드를 작성하는 것이 더 나을 수도 있습니다. 아니면 특별한 경우를 위해 자신 만의 보석을 만들 수도 있습니다.

보석을 쓰는 데 전념한다면 다른 옵션을 benchmarking 사용할 것을 권합니다.

저는 XLS 형식이 최고는 아니지만 사용중인 항목이 이미 CSV에서 지원되고 있습니다. 이 경우 빠른 시간에 빠른 CSV 작성기를 작성할 수 있어야합니다.

File.open('some_file.csv', 'w') do |file| 
    file.write "Line 1, data 1\n" 
    file.write "Line 2, data 2\n" 
end 

시작하기위한 보일러판이 있습니다.

+0

감사합니다. 나는 조금 생각하고 몇 가지 검사를하고 다시 한 번 물어볼 것입니다. – skrypalyk

+1

그것이 바로 우리가 여기있는 이유입니다. – screenmutt