Альтернатива CSV-Array Преобразование в Fetch Data Faster - PullRequest
0 голосов
/ 06 октября 2018

Я создал приложение с Cordova / PhoneGap и использовал наивный подход для извлечения данных.Я просто преобразовал свои два (разделенных табуляцией) CSV-файла в массивы, а затем запустил некоторые функции поиска (не показаны) для этих массивов.

    // Load the rankings.csv file and define its parameters.
var requests = new XMLHttpRequest(); // You only need one XMLHttpRequest() object.
requests.open("GET", "docs/rankings.csv", false);
requests.send(null);
var l2Ranks = [];
var jsoRanks = requests.responseText.split("\n");
for (x = 0; x < jsoRanks.length; x++) {
  l2Ranks.push(jsoRanks[x].split("\t"));
  for (y = 0; y < l2Ranks.length; y++) {
    for (z = 0; z < l2Ranks[y].length; z++) {
      l2Ranks[y][z] = Number(l2Ranks[y][z]);
    }
  }
}
// Load the sentences.csv file and define its parameters.
requests.open("GET", "docs/sentences.csv", false);
requests.send(null);
var l2Sents = [];
var jsoSents = requests.responseText.split("\n");
for (x = 0; x < jsoSents.length; x++) {
  l2Sents.push(jsoSents[x].split("\t"));
  for (y = 0; y < l2Sents.length; y++) {
    l2Sents[y][0] = Number(l2Sents[y][0]);
  }
}

Теперь это работало нормально, когда файлы CSV были меньше.Однако время загрузки стало заметно длиннее.Сначала я собирался замаскировать его экраном загрузки, но я подозреваю, что есть более быстрый способ полезной загрузки моих данных.

Итак, я рассмотрел несколько вариантов:

  1. Iмог бы попробовать потоковую передачу CSV с csv-stream или fast-csv , но я не видел пример того, как извлечь данные с помощью этого метода.
  2. Я мог быпреобразовать CSV-файлы в JSON-файлы и просто запустить их, но не знаю, какие преимущества дает его скорость.
  3. Я мог бы выполнить поиск по регулярному тексту по CSV-файлу, но опять же,Я не знаю, будет ли быстрое открытие файла размером 5 МБ и его увеличение быстрее.

Что из этого будет быстрее?Кроме того, что касается опции (1), как будет выглядеть простая функция поиска (похожая на INDEX (MATCH ()) в программном обеспечении для электронных таблиц)?

В настоящее время другие мои функции (не показаны) находят указанныйВ столбце l2Ranks получите его идентификационный номер для него (0-й элемент в l2Ranks и l2Sents), а затем верните элемент l2Sents, который соответствует тому же указанному столбцу и строке, содержащей идентификационный номер.Там нулевое замедление.

...