Мне было скучно, поэтому я попытался провести тест скорости в Python для проверки концепции, используя Sqlite (который, как я понимаю, не лучший способ сделать это).
Во-первых, базовый тест из 50 000итерации, открытие и закрытие соединения после каждой итерации.
#!/usr/bin/env python
import sqlite3
class Creature(object):
legs = 0
eyes = 'monocular'
kind = ''
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute('''create table testtable
(date text, legs text, eyes text, kind text)''')
conn.commit()
c.close()
for i in range(50000):
c = conn.cursor()
creature1 = Creature()
creature1.legs = 5
creature1.eyes = 'monocular'
creature1.kind = 'mungy'
c.execute('insert into testtable values (?,?,?,?)', ('today', str(creature1.legs), creature1.eyes, creature1.kind))
creature2 = Creature()
creature2.legs = 3
creature2.eyes = 'binocular'
creature2.kind = 'thingy'
c.execute('insert into testtable values (?,?,?,?)', ('today', str(creature2.legs), creature2.eyes, creature2.kind))
creature3 = Creature()
creature3.legs = 3
creature3.eyes = 'monocular'
creature3.kind = 'pungy'
c.execute('insert into testtable values (?,?,?,?)', ('today', str(creature3.legs), creature3.eyes, creature3.kind))
conn.commit()
c.close()
А теперь 50000 итераций, но без закрытия соединения.
#!/usr/bin/env python
import sqlite3
class Creature(object):
legs = 0
eyes = 'monocular'
kind = ''
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute('''create table testtable
(date text, legs text, eyes text, kind text)''')
conn.commit()
c.close()
c = conn.cursor()
for i in range(50000):
creature1 = Creature()
creature1.legs = 5
creature1.eyes = 'monocular'
creature1.kind = 'mungy'
creature2 = Creature()
creature2.legs = 3
creature2.eyes = 'binocular'
creature2.kind = 'thingy'
creature3 = Creature()
creature3.legs = 3
creature3.eyes = 'monocular'
creature3.kind = 'pungy'
c.execute('insert into testtable values (?,?,?,?)', ('today', str(creature1.legs), creature1.eyes, creature1.kind))
c.execute('insert into testtable values (?,?,?,?)', ('today', str(creature2.legs), creature2.eyes, creature2.kind))
c.execute('insert into testtable values (?,?,?,?)', ('today', str(creature3.legs), creature3.eyes, creature3.kind))
conn.commit()
c.close()
Результаты?
First method: Average 2.264s
Second method: Average 2.157s
Итак, это имеет значение, хотя и незначительное.
И вот оно у вас.
Определенно согласен с тем, что сказал Стефан.