Project

General

Profile

Bug #14404

connecteur tableur : perfs déplorables sur un fichier ods

Added by Frédéric Péters over 8 years ago. Updated almost 7 years ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
21 December 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:

Description

Avec le fichier en pièce jointe, sur tournai, le endpoint de base /data prenait 8,5 secondes. En mettant le fichier en CSV, ça prend 62 millisecondes.


Files

usage_des_actes_modif.ods (4.19 KB) usage_des_actes_modif.ods Frédéric Péters, 21 December 2016 10:51 AM
Communes-GRC.ods (18.4 KB) Communes-GRC.ods Frédéric Péters, 22 June 2017 08:58 AM
meyzieu_base_nautique_groupes_b2n8fps.ods (80.1 KB) meyzieu_base_nautique_groupes_b2n8fps.ods Frédéric Péters, 24 June 2018 11:12 AM

Related issues

Related to Passerelle - Développement #11260: mise en base des données du CSVFermé07 June 2016

Actions
Related to Publik - Développement #44020: développer notre petit module de lecture odsSolution proposée12 June 2020

Actions
Has duplicate Passerelle - Support #30282: csvdatasource: pyexcel-ods lent à la lecture d'un ods de 217 lignesRejeté31 January 2019

Actions

History

#1

Updated by Frédéric Péters over 8 years ago

En local,

>>> def f():
...     t0 = time.time()
...     get_data_ods('/tmp/usage_des_actes_modif.ods')
...     print time.time() - t0
... 
>>> f()
10.8324098587

Ce fichier fait 4 Ko, 23 lignes, 3 colonnes.

#2

Updated by Frédéric Péters over 8 years ago

  • Subject changed from connecteur tableur : perfs déplorables sur de l'ods to connecteur tableur : perfs déplorables sur un fichier ods

La détection du nombre de colonnes/lignes se fait sur cette base :

        <table:table-row table:number-rows-repeated="1048553" table:style-name="ro1">
          <table:table-cell table:number-columns-repeated="16384"/>
        </table:table-row>

et badaboum.

#3

Updated by Jean-Baptiste Jaillet over 8 years ago

il regarde chaque colonne vide puis dans chaque colonne il regarde chaque cellule ? (si je comprends bien).
Et il regarde celle qui sont pas vide...

#4

Updated by Frédéric Péters over 8 years ago

#5

Updated by Frédéric Péters over 8 years ago

Sans passer par #11260, un truc qui doit pouvoir être fait c'est charger le fichier en mode "stream", limiter le nombre de colonnes à celles où le connecteur a défini des identifiants, s'arrêter dès qu'une ligne est totalement vide.

#6

Updated by Benjamin Dauvergne over 8 years ago

Le plus simple je pense c'est de convertir au chargement vers un format unique, par exemple CSV/UTF-8, mais si on sait écrire de l'ODS ça pourrait ça. À voir si on pourrait quand même garder le fichier original pour quand l'utilisateur veut le télécharger (quelqu'un qui utilise XLS n'a peut être pas de quoi éditer correctement du CSV/UTF-8 ou de l'ODS).

#7

Updated by Frédéric Péters almost 8 years ago

Autre fichier pareillement gros, rencontré dans #17100.

#8

Updated by Frédéric Péters almost 7 years ago

Pour aller au-delà des fichiers déclarant par erreur des milliers de lignes ou colonnes, ce fichier (via #24726 ) (au premier regard) ne me semble pas exposer ces soucis. Mais décompressé son content.xml fait 3,6 Mo, ce qui suffirait à être trop lent. Ajouté à pyexcel qui est bien peu rapide, parser le fichier prend genre 5 secondes (dans mon test en local).

Bref, sur la proposition de Benjamin, produire un CSV "cache", ça serait bienvenu.

#9

Updated by Frédéric Péters about 6 years ago

  • Has duplicate Support #30282: csvdatasource: pyexcel-ods lent à la lecture d'un ods de 217 lignes added
#11

Updated by Frédéric Péters almost 5 years ago

Also available in: Atom PDF