Benchmark

Le tableau suivant montre les résultats d’un benchmark comparant plusieurs ORM Python pour l’import des 10000+ termes de la classification médicale CIM10 (écriture), et ensuite pour parcourir les termes (lectures).

Tous les ORM utilisent SQLite3. De plus, une version en SQL pur (non-object) a été testée.

Résultats:

Module Écriture Lecture Espace disque Lignes de code Héritage
SQLAlchemy 1.1.13 20.32 secondes 6.41 secondes 962 560 octets 42 lines simple (?)
SQLObjet 3.4.0 7.58 secondes 2.19 secondes 966 656 octets 35 lines simple
Peewee 2.10.1 5.37 secondes 2.08 secondes 962 560 octets 35 lines simple (?)
Pony 0.7.2 7.10 secondes 0.61 secondes 958 464 octets 35 lines multiple (partiel)
Owlready 2 0.3 1.41 secondes 0.85 secondes 4 235 264 octets 38 lines multiple (complet)
ORMithorynque 1.65 secondes 0.49 secondes 1 269 760 octets 31 lines multiple (complet)
SQL (non-objet) 1.12 secondes 0.19 secondes 966 656 octets 45 lines aucun

(pour les chiffres, les plus faibles valeurs sont les meilleures)

ORMithorynque bat tous les autres ORM pour la vitesse. Il demande aussi moins de ligne de code (principalement grâce à la création et la mise à jour automatique du schéma de la base).

ORMithorynque produit des bases de données plus volumineuses que les autres ORM. Ce résultat était attendu car ORMithorynque nécessite une table supplémentaire pour stocker les noms des classes, à cause du support de l’héritage multiple.