Salut à tous !
Est-ce que quelqu'un saurait quel parser XML il vaut mieux utiliser entre Xerces et libxml2 pour faire de la validation à partir de fichiers XSD ?
J'ai fait mon petit benchmark des parsers XML qui existent (Xerces, libxml2, RapidXml, pugixml, TinyXML, Expat,...) et on dirait bien que seulement Xerces et libxml2 proposent de valider les XML avec des XSD.
J'ai donc implémenté un parser avec libxml2 qui me paraissait être celui qui correspondait le plus à mon besoin car je dois parser de gros fichiers. Cela dit j'ai également lu que Xerces était assez performant sur les gros fichiers aussi donc pas évident de savoir lequel choisir finalement...
J'ai ensuite chronométré un parser avec Xerces et un parser avec libxml2 pour voir lequel des deux étaient le meilleur et à ma grande surprise le parser Xerces (donc pas celui que je veux implémenter à la base) semble être plus rapide.
Sans la validation XSD, libxml2 est très légèrement plus rapide que Xerces que ce soit sur un gros ou un petit fichier mais la différence est assez faible.
En revanche, sur un gros fichier et avec la validation XSD activée, Xerces est beaucoup plus rapide que libxml2 (peut-être 10 fois plus).
Je voulais donc savoir s'il y avait une raison à cela et s'il était inutile que je m'acharne à utiliser libxml2 car j'ai l'impression que Xerces est meilleur à tous les niveaux...
Cela dit j'ai essayé de trouver des infos pour pouvoir confirmer mon choix de changer vers Xerces notamment dans la documentation https://xerces.apache.org/xerces-c/ mais je n'ai pas trouvé d'explication convaincante pour la lenteur de libxml2 sur la validation XSD. Ce qui me fait me demander si je n'ai pas tout simplement mal codé mon parser libxml2...
Y a-t-il donc une réponse universelle à la question : faut-il choisir Xerces ou libxml2 ? (le fait que Xerces soit plus difficile à utiliser que libxml2 ne serait pas un problème)
Partager