2015-05-12 2 views
0

Папа Parse, по-видимому, вызывает сбой Chrome и Opera (Windows 7), если я пытаюсь разобрать «большие» строки csv около 1 миллиона строк с примерно 20 столбцами. Где одна и та же страница успешно загружается в Firefox. Сбой Chrome и Opera даже перед вызовом Parse, если у меня установлена ​​большая строка csv, и добавьте тег < > в библиотеку papaparse.js. Если я не добавляю тег < > для papaparse.js, нет проблем с созданием больших строк csv, но тогда я не могу их разобрать. В моем фактическом варианте использования я не генерирую большие строки csv в javascript, а скорее вытаскиваю их из архива zip. Кажется, не имеет никакого значения, если я использую функции шага или блока. Здесь вы можете запустить тестовый пример; Test Case Код ошибки;Большие строки с анализом Papa приводят к сбою Chrome и Opera

<!doctype html> 
<html> 

<script src="http://papaparse.com/resources/js/papaparse.js"></script> 

<body> 

<script> 

function my_createMockCSV(rows) { 
    var my_csv="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v\r\n"; 
    for (var i=1; i<rows; i++) { 
    my_csv+= i+","+ i+","+ i+","+ i+","+ i+","+ i+","+ i+","+ i+","+ 
      i+","+ i+","+ i+","+ i+","+ i+","+ i+","+ i+","+ i+","+ 
      i+","+ i+","+ i+","+ i+","+ i+","+ i+","+"\r\n"; 
    } 
return my_csv; 
} 


function parseCSV(csv) { 

var rowcount=0; 

Papa.parse(csv, 
       { 
       delimiter: ',', 
       worker: false, 
       encoding: 'default', 
       header: true, 
       chunk: function(results) { 
       rowcount+= results.data.length; 
       console.log("Parsed rows: "+rowcount); 
       }, 
      complete: function (results) { 
       console.log("Complete - parsed: "+rowcount+" rows"); 
       } 
      }); 

} 

function run_testcase() { 
rows=document.getElementById("rows").value; 
//parseCSV(my_createMockCSV(rows)); 
console.log("Begin Generating CSV ..."); 
alert("About to generate Mock CSV"); 
var my_csv=my_createMockCSV(rows); 
console.log("End Generating CSV ..."); 
alert("About to parse Mock CSV"); 
parseCSV(my_csv); 
} 

</script> 

Papaparse test case script: Will crash Chrome, Opera<br/> 

Rows: <input id="rows" type="number" value="1000000"> (Try around 1mil rows) 
<button onclick="run_testcase();">Run</button> 

</body> 
</html> 

ответ

0

Para Parse не вызывает расторжения браузера.

Chrome и Opera не эффективны с такими строками, как Firefox. Вы просто не можете создать строку с миллионом строк и 20 колонок в памяти, как вы делаете, и ожидать, что вкладка браузера останется стабильной.

Прокомментировать звонок Papa.Parse(), и вы увидите, что я имею в виду: браузер по-прежнему падает.

Смежные вопросы