POI performance
Je suis à l'aide de POI dans mon application web J2EE pour générer un classeur.
Cependant, je trouve que PI prend environ 3 minutes pour créer un classeur avec 25K de lignes(environ 15 colonnes).
Est-ce un POI problème de performance , ou est-il justifié de prendre autant de temps?
Existe-il d'autres Api connu pour de meilleures performances ?
- réponses acceptées sont un indicateur pour ceux qui lisent la question de ce que la personne considérée comme le droit de réponse à son problème. C'est un élément d'information très important. Cela dit, n'importe quelle raison vous n'avez pas de commentaire sur la nécessité pour le demandeur de fournir un minimum d'extrait de code montrant le comportement décrit?
- il est juste deviner. La raison pourrait être n'importe quoi, qui, l'exemple de code serait montrer immédiatement. Serait-il raisonnable de penser que vous améliorer votre méta-les services de police?
- Ravn Andersen: Serait-il raisonnable de penser que vous améliorer votre méta-méta-les services de police? 😉
- Je vais considérer que lorsque vous l'avez pris avec moi...
Vous devez vous connecter pour publier un commentaire.
Je serais très surpris de voir POI prendre autant de temps pour générer un tel fichier. Je viens de généré une feuille avec 30000 lignes x 10 cellules dans environ 18 ans (pas de formatage, pour être juste). La cause peut être l'une des suivantes:
La performance de l'écriture de gros fichiers avec POI peut être fortement réduit si vous avez utilisé le "streaming" POI API au lieu de la norme. En effet, par défaut, PI vous permet de conserver vos données en mémoire avant de les écrire en une seule fois à la fin. L'empreinte mémoire de ce qui peut être ridiculement élevé pour les gros fichiers. Au lieu d'utiliser le streaming API, vous pouvez contrôler la façon dont la mémoire est utilisée et les données sont écrites sur le disque progressivement.
Afin de créer un flux de classeur, utilisez quelque chose comme :
Si aucune des autres réponses de travail, de voir si Andy Khan JExcel sera mieux. Je l'ai trouvé pour être de loin supérieure à POI pour traiter avec Excel en Java.
Nous utilisons également des POI dans notre web app et n'ont aucun problème de performance avec elle - même si nos documents générés sont beaucoup plus petits que le vôtre. Je voudrais tout d'abord vérifier si PI est la vraie question. Essayez de produire ces documents sans l'J2EE-frais généraux (Test Unitaire) et de mesurer la performance. Vous pouvez également surveiller la charge et de l'utilisation de la mémoire sur votre serveur J2EE pour voir si les problèmes viennent de certains sous-optimales des paramètres du système.
J'ai comparé Apache POI avec JExcel de la bibliothèque. Il semble que JExcel est d'environ jusqu'à 4x plus rapide que celle de Apache POI, mais la consommation de mémoire semble être plus ou moins le même:
Je l'ai testé avec JExcel la version 2.6.12 et Apache POI version 3.7. Vous avez besoin de télécharger les dernières versions de la bibliothèque vous-même et exécuter les tests simples ci-dessus pour obtenir plus précisément le nombre.
Remarque: il y a une limite dans Apache POI de 65535 lignes par feuille.