Skip to content

Instantly share code, notes, and snippets.

@ludndev
Forked from dtornow/benchmark.py
Created July 26, 2024 09:02
Show Gist options
  • Save ludndev/61fa283c4bbc3c2c18a3d93db8536fb9 to your computer and use it in GitHub Desktop.
Save ludndev/61fa283c4bbc3c2c18a3d93db8536fb9 to your computer and use it in GitHub Desktop.
Batching Benchmark
import sqlite3
import time
import os
def create_table(conn):
conn.execute('''CREATE TABLE IF NOT EXISTS benchmark (id INTEGER PRIMARY KEY, value TEXT)''')
conn.commit()
def non_batched_insert(conn, n):
for i in range(n):
conn.execute("INSERT INTO benchmark (value) VALUES (?)", (f"Value {i}",))
conn.commit()
def batched_insert(conn, n):
for i in range(n):
conn.execute("INSERT INTO benchmark (value) VALUES (?)", (f"Value {i}",))
conn.commit()
def main():
non_batched_db = "non_batched_benchmark.db"
batched_db = "batched_benchmark.db"
num_inserts = 100_000
# Delete existing database files if present
for db_file in [non_batched_db, batched_db]:
if os.path.exists(db_file):
os.remove(db_file)
# Non-batched inserts
conn_non_batched = sqlite3.connect(non_batched_db)
create_table(conn_non_batched)
print(f"Performing {num_inserts} non-batched inserts...")
start_time = time.time()
non_batched_insert(conn_non_batched, num_inserts)
end_time = time.time()
non_batched_time = end_time - start_time
print(f"Non-batched insert time: {non_batched_time:.2f} seconds")
conn_non_batched.close()
# Batched inserts
conn_batched = sqlite3.connect(batched_db)
create_table(conn_batched)
print(f"Performing {num_inserts} batched inserts...")
start_time = time.time()
batched_insert(conn_batched, num_inserts)
end_time = time.time()
batched_time = end_time - start_time
print(f"Batched insert time: {batched_time:.2f} seconds")
conn_batched.close()
print(f"\nDatabase files created:")
print(f"Non-batched: {non_batched_db}")
print(f"Batched: {batched_db}")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment