This is a simple benchmark of SQLite. At present this test profile just measures the time to perform a pre-defined number of insertions on an indexed database.
According to the features page of sqlite.org, the database is implemented with a single database file. Access to the database is done with file locking. Looking at the performance results, it looks like on my systems the behavior is dominated by disk/filesystem performance and not much of a CPU benchmark.
The program is single-threaded and I tested bound to core 1.
Metrics (Intel) - phoronix/sqlitesh - pid 24491 On_CPU 0.001 On_Core 0.005 IPC 0.534 Retire 0.158 (15.8%) FrontEnd 0.586 (58.6%) Spec 0.079 (7.9%) Backend 0.178 (17.8%) Elapsed 637.03 Procs 10 Maxrss 10K Minflt 1538 Majflt 0 Inblock 0 Oublock 361312 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 45311 (99.6%) Nivcsw 202 Utime 0.518302 Stime 2.724126 Start 333626.94 Finish 334263.97
Metrics show a huge percentage of involuntary context switches and an extremely low On_CPU, both signs that we’re waiting on I/O as this test is more for disk latency and processor.
Metrics (AMD) - phoronix/sqlitesh - pid 6019 On_CPU 0.000 On_Core 0.007 IPC 0.366 FrontCyc 0.118 (11.8%) BackCyc 0.044 (4.4%) Elapsed 758.23 Procs 10 Maxrss 10K Minflt 1576 Majflt 0 Inblock 0 Oublock 361312 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 47646 (97.7%) Nivcsw 1145 Utime 0.929035 Stime 4.478492 Start 340232.31 Finish 340990.54
AMD metrics are similar.