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.