Le tableau suivant montre les résultats d'un benchmark comparant plusieurs ORM et bases de graphes, pour l'écriture et la lecture de 10 000 noeuds/objets, en accès randomisé :
Base |
Écriture |
Lecture |
Sémantique |
---|---|---|---|
Python + SQLAlchemy (1.3.2) |
156 obj/sec |
5 345 obj/sec |
objet |
Python + SQLObjet (3.7) |
51 obj/sec |
11 727 obj/sec |
objet |
Python + MongoDB (4.0.4) |
2 289 obj/sec |
4 723 obj/sec |
document |
Python + Neo4J (3.4.9) |
245 obj/sec |
223 obj/sec |
graphe |
Python + Owlready2 (0.16) |
12 892 obj/sec |
19 158 obj/sec |
objet, ontologie (OWL) |
PyPy3 + Owlready2 (0.16) |
12 089 obj/sec |
31 502 obj/sec |
objet, ontologie (OWL) |
(les valeurs les plus grandes sont les meilleures)
Owlready2 bat toutes les autres bases pour la vitesse. Cela s'explique car la base de données internes (au format SQLite3) est directement intégrée dans l'application. Au contraire, Neo4J et MongoDB utilisent un serveur distant ; dans ce cas les communications entre l'application et le serveur distant demande un temps non négligeable.
Owlready2 possède également davantage de fonctionnalité grâce à son niveau sémantique supérieur (par exemple le support de l'héritage multiple).