Arkusz kalkulacyjny Klej nieznośnie powolny dla Ruby 1.9.2 - ruby, ruby-on-rails-3, arkusz kalkulacyjny, xls, arkusz kalkulacyjny-klejnot

Buduję parser Excel dla mojego zespołu danych i mam problem z klejnotem arkusza kalkulacyjnego 0.6.5.1.

W Rubim 1.9.2 użyj arkusza kalkulacyjnego.metoda otwarta natychmiast przeskakuje do 700m-1.3g pamięci i zawiesza się w nieskończoność, nawet na małych skoroszytach (1 arkusz, 300 wierszy). Tymczasem w Ruby 1.8.7, Spreadsheet.open jest zgryźliwy i bezbłędny.

W tej chwili robię dużo pracy w Irb, więcże mogę kontrolować środowisko, którego używam do samych podstaw (rubigems / arkusz kalkulacyjny), ale muszę w końcu przenieść ten parser do projektu Rails 3, więc ustalenie z 1.8.7 nie jest opcją.

Nie ma dokumentacji na ten temat ani nawet dowodów na to, że inni ludzie doświadczają tego problemu. Ilekroć przerywam wywołanie Spreadsheet.open, pozostawiam ten błąd za każdym razem:

gems / spreadsheet-0.6.5.1 / lib / spreadsheet / worksheet.rb: 181: in "call"

Chciałbym uniknąć małpiej łatania tego lub nurkowania bezpośrednio do klejnotu, aby rozwiązać problem .. Czy ktoś inny doświadczył tego problemu? Lub coś podobnego?

Odpowiedzi:

2 dla odpowiedzi № 1

Podkręć GC i zobacz, czy to coś naprawi:

Dla REE:

export RUBY_HEAP_MIN_SLOTS=1000000
export RUBY_HEAP_SLOTS_INCREMENT=1000000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=1000000000
export RUBY_HEAP_FREE_MIN=500000

Coś podobnego powinno działać na 1.9.x, YMMV.

Dzięki tym ulepszeniom wyeksportowano 25 tys. Wierszy do eksportu przy użyciu klejnotu arkusza kalkulacyjnego od 10+ minut do ~ 2 minut.


0 dla odpowiedzi nr 2

Dwie myśli:


0 dla odpowiedzi № 3

Będzie działać dobrze, gdy nie będziesz używać IRB

Podczas testowania w IRB użyj tego:

2.1.0: 003> book = Spreadsheet.open "myfile.xls"; zero

=> zero


Powiązane pytania
Menu