• [^] # Re: Tu es dur

    Posté par . En réponse au journal MS Office c'est vraiment de la merde. Évalué à 6. Dernière modification le 05 septembre 2013 à 21:55.

    Il a dis que tu peut lancer LibO sans avoir java. Fait le test, tu remarquera que ça reste très lent a démarrer.

    Effectivement. J'ai eu une vraie machine pour tester par ce que c'est sympa de parler dans le vide mais prendre 5 minutes pour essayer de comprendre c'est quand même mieux. On peut même le faire quand on ne connait rien de OOO/LO comme moi:

    Fait 1: Aucune JVM n'est chargée au démarrage quand on lance LO ou qu'on ouvre/édite/sauve un text document ou un spreadsheet. On peut facilement le voir avec un strace. L'assertion du monsieur est donc une énorme connerie, le démarrage est lent... à cause d'un truc qui n'est jamais chargé ni exécuté...

    $ strace -f -e open libreoffice test.docx 2>&1 | grep -i java | grep -v ENOENT
    [pid 16786] open("/home/user/.config/libreoffice/4/user/config/javasettings_Linux_X86_64.xml", O_RDONLY) = 3
    [pid 16786] open("/home/user/.config/libreoffice/4/user/config/javasettings_Linux_X86_64.xml", O_RDONLY) = 3
    [pid 16786] open("/home/user/.config/libreoffice/4/user/config/javasettings_Linux_X86_64.xml", O_RDONLY) = 3
    [pid 16786] open("/home/user/.config/libreoffice/4/user/config/javasettings_Linux_X86_64.xml", O_RDONLY) = 3
    [pid 16786] open("/usr/lib64/libreoffice/ure/lib/../share/misc/javavendors.xml", O_RDONLY) = 3
    [pid 16786] open("/usr/lib64/libreoffice/ure/lib/../share/misc/javavendors.xml", O_RDONLY) = 3
    [pid 16786] open("/usr/lib64/libreoffice/ure/lib/libsunjavaplugin.so", O_RDONLY|O_CLOEXEC) = 3
    

    Fait 2: Une JVM embarquée est bien démarrée lorsque l'on bascule sur une fonctionnalité qui en a besoin (il y en a peu). Par exemple en utilisant le module base on voit passer:

    [pid 16609] open("/usr/lib64/libreoffice/ure/lib/libsunjavaplugin.so", O_RDONLY|O_CLOEXEC) = 51
    [pid 16609] open("/usr/java/jdk1.7.0_01/jre/lib/amd64/server/libjvm.so", O_RDONLY|O_CLOEXEC) = 51
    [pid 16609] open("/usr/java/jdk1.7.0_01/jre/lib/amd64/libverify.so", O_RDONLY|O_CLOEXEC) = 51
    

    Une fois qu'on a le pid on peut interagir avec elle part les moyens standard sans aucun soucis pour regarder ce qu'elle fait.

    Après on peut après s'amuser à mesurer le temps de démarrage avec les caches du VFS pleins ou non. Par exemple je mets ~10s à lancer/ouvrir un document/quitter à froid mais < 2s une fois les pages en cache. On peut après s'amuser à profiler le démarrage avec perf/oprofile/flamegraph pour ceux que ça intéresse mais ça va pas apprendre grand chose à ce niveau là Le temps de démarrage vient clairement majoritairement des IO...

    Voilà je peux dire des conneries, mais ou moins j'ai essayé de me faire un avis objectif sur la question.