Projet

Général

Profil

Bug #14404

connecteur tableur : perfs déplorables sur un fichier ods

Ajouté par Frédéric Péters il y a plus de 7 ans. Mis à jour il y a presque 6 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
21 décembre 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
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.


Fichiers

usage_des_actes_modif.ods (4,19 ko) usage_des_actes_modif.ods Frédéric Péters, 21 décembre 2016 10:51
Communes-GRC.ods (18,4 ko) Communes-GRC.ods Frédéric Péters, 22 juin 2017 08:58
meyzieu_base_nautique_groupes_b2n8fps.ods (80,1 ko) meyzieu_base_nautique_groupes_b2n8fps.ods Frédéric Péters, 24 juin 2018 11:12

Demandes liées

Lié à Passerelle - Development #11260: mise en base des données du CSVFermé07 juin 2016

Actions
Lié à Publik - Development #44020: développer notre petit module de lecture odsSolution proposée12 juin 2020

Actions
Dupliqué par Passerelle - Support #30282: csvdatasource: pyexcel-ods lent à la lecture d'un ods de 217 lignesRejeté31 janvier 2019

Actions

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 7 ans

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

Mis à jour par Frédéric Péters il y a plus de 7 ans

  • Sujet changé de connecteur tableur : perfs déplorables sur de l'ods à 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

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

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

Mis à jour par Frédéric Péters il y a plus de 7 ans

#5

Mis à jour par Frédéric Péters il y a plus de 7 ans

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

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

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

Mis à jour par Frédéric Péters il y a presque 7 ans

Autre fichier pareillement gros, rencontré dans #17100.

#8

Mis à jour par Frédéric Péters il y a presque 6 ans

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

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Dupliqué par Support #30282: csvdatasource: pyexcel-ods lent à la lecture d'un ods de 217 lignes ajouté
#11

Mis à jour par Frédéric Péters il y a presque 4 ans

Formats disponibles : Atom PDF