bench

package module
v1.1.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2026 License: Unlicense Imports: 5 Imported by: 0

README

logo-png

Go Reference

The SQLite Drivers 26.04 Benchmarks Game

This repository is a modification of go-sqlite-bench, forked at 4df8bfd.

Category: database/sql drivers

For the non database/sql drivers category please see modernc.org/sqlite-bench2

[[TOC]]

Drivers

These drivers are benchmarked

Go version: go1.26.2

A general note on benchmarks and this repository

Do not trust benchmarks, write your own. These specific benchmarks are modelled after someone's very own database usage scenarios. Your scenarios may be totally different.

Each test is run twice, the recorded values are the averages of the two runs. This is not very scientific.

Database Schema

The test database consist of the following tables and indices:

PRAGMA journal_mode=DELETE;
PRAGMA synchronous=FULL;
PRAGMA foreign_keys=1;
PRAGMA busy_timeout=5000;

CREATE TABLE users (
    id INTEGER PRIMARY KEY NOT NULL,
    created INTEGER NOT NULL,
    email TEXT NOT NULL,
    active INTEGER NOT NULL);
CREATE INDEX users_created ON users(created);

CREATE TABLE articles (
    id INTEGER PRIMARY KEY NOT NULL,
    created INTEGER NOT NULL,  
    userId INTEGER NOT NULL REFERENCES users(id),
    text TEXT NOT NULL);
CREATE INDEX articles_created ON articles(created);
CREATE INDEX articles_userId ON articles(userId);

CREATE TABLE comments (
    id INTEGER PRIMARY KEY NOT NULL,
    created INTEGER NOT NULL,
    articleId INTEGER NOT NULL REFERENCES articles(id),
    text TEXT NOT NULL);
CREATE INDEX comments_created ON comments(created);
CREATE INDEX comments_articleId ON comments(articleId);
Benchmark Results

Result times are measured in milliseconds. Lower numbers indicate better performance.


Simple Benchmark

Insert 1 million user rows in one database transaction. Then query all users once.

Complex Benchmark

Insert 200 users in one database transaction. Then insert 20000 articles (100 articles for each user) in another transaction. Then insert 400000 comments (20 comments for each article) in another transaction. Then query all users, articles and comments in one big JOIN statement.

Many Benchmark

Insert N users in one database transaction. Then query all users 1000 times. This benchmark is used to simluate a read-heavy use case.

Large Benchmark

Insert 10000 users with N bytes of row content. Then query all users. This benchmark is used to simluate reading of large (gigabytes) databases.

Concurrent Benchmark

Insert one million users. Then have N goroutines query all users. This benchmark is used to simulate concurrent reads.

4GB RAM builders

On 32 bit architectures and on the linux/ppc64le builder - to avoid OOM

  • the Large benchmark uses 2.5k users instead of a 10k.
  • the Concurrent benchmark uses 250k users instead of a million.

Caveat emptor

Mistakes happen. If you find anything wrong about the results please report the problem at the issue tracker, thank you.


tl;dr: Scorecard

The best time in every test, shown in bold in the tables below individual graphs, is worth one point. The scorecard shows where and how many points were awarded to each benchmarked package.

Total score ties are ranked alphabetically. Please read those as one shared rank.

This score is an ad hoc aggregate metric. Its usefulness is possibly at most in showing how the scores may evolve in time when new, improved versions of packages will get benchmarked.

The time results for the particular OS and HW provide a more detailed info.

Total Simple Complex Many Large Concurrent
1. mattn 126 21 29 30 25 21
2. ncruces 44 3 1 6 23 11
3. modernc 38 8 2 12 0 16

Disclaimer: The score and the ranking do not show how will any package perform in your particular application on a particular system. Additionally, empirically the scores fluctuate as much as about +/- 10 points. It's complicatd to better stabilize the results to be more precise and reliable. On some machines the tests run for many hours already with n = 2.

Results: darwin/amd64

  • OS: macOS Tahoe 26.4
  • CPU: Apple M1, 2020
  • GOMAXPROCS: 8
  • RAM: 8GB
  • Disk: APPLE SSD AP0256Q Media (251GB)

darwin/amd64-simple-png

Simple insert query
mattn *1762 835
modernc 2138 *626
ncruces 2369 1117

Lower numbers are better. * Scorecard point awarded.

darwin/amd64-complex-png

Complex insert query
mattn *1005 1088
modernc 1448 *991
ncruces 1557 1251

Lower numbers are better. * Scorecard point awarded.

darwin/amd64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn 24 91 765
modernc *23 *72 *583
ncruces 31 88 671

Lower numbers are better. * Scorecard point awarded.

darwin/amd64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn 424 1392 3482
modernc 375 619 2355
ncruces *188 *407 *1404

Lower numbers are better. * Scorecard point awarded.

darwin/amd64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 973 1072 1967
modernc *834 *932 1888
ncruces 897 1024 *1698

Lower numbers are better. * Scorecard point awarded.

Results: darwin/arm64

  • OS: macOS Tahoe 26.4
  • CPU: Apple M1, 2020
  • GOMAXPROCS: 8
  • RAM: 8GB
  • Disk: APPLE SSD AP0256Q Media (251GB)

darwin/arm64-simple-png

Simple insert query
mattn *1143 508
modernc 1692 *496
ncruces 1850 576

Lower numbers are better. * Scorecard point awarded.

darwin/arm64-complex-png

Complex insert query
mattn *651 *653
modernc 1150 807
ncruces 1227 952

Lower numbers are better. * Scorecard point awarded.

darwin/arm64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *15 *55 *455
modernc 17 56 474
ncruces 20 65 516

Lower numbers are better. * Scorecard point awarded.

darwin/arm64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn 513 807 3175
modernc 241 413 3146
ncruces *147 *254 *2767

Lower numbers are better. * Scorecard point awarded.

darwin/arm64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *586 *673 1367
modernc 600 680 1238
ncruces 648 743 *1225

Lower numbers are better. * Scorecard point awarded.

Results: freebsd/amd64

  • OS: FreeBSD 15.0
  • CPU: qemu-system-x86_64 linux/amd64-0
  • GOMAXPROCS: 2
  • RAM: 8GB
  • Disk: qemu qcow2 (64GB)

freebsd/amd64-simple-png

Simple insert query
mattn *2222 1093
modernc 2942 *974
ncruces 3352 1204

Lower numbers are better. * Scorecard point awarded.

freebsd/amd64-complex-png

Complex insert query
mattn *1241 *1178
modernc 1890 1395
ncruces 2266 1686

Lower numbers are better. * Scorecard point awarded.

freebsd/amd64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *25 110 976
modernc 27 *104 *888
ncruces 34 126 1094

Lower numbers are better. * Scorecard point awarded.

freebsd/amd64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn 323 608 1281
modernc 652 1255 2189
ncruces *308 *604 *1114

Lower numbers are better. * Scorecard point awarded.

freebsd/amd64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *1257 2707 5248
modernc 1362 *2452 *4712
ncruces 1338 2882 5608

Lower numbers are better. * Scorecard point awarded.

Results: freebsd/arm64

  • OS: FreeBSD 15.0
  • CPU: qemu-system-aarch64 linux/amd64-0
  • GOMAXPROCS: 2
  • RAM: 8GB
  • Disk: qemu qcow2 (64GB)

freebsd/arm64-simple-png

Simple insert query
mattn *48671 28982
modernc 82954 *24993
ncruces 113834 43123

Lower numbers are better. * Scorecard point awarded.

freebsd/arm64-complex-png

Complex insert query
mattn *29670 28785
modernc 51442 *28444
ncruces 70489 39550

Lower numbers are better. * Scorecard point awarded.

freebsd/arm64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *681 *2374 27376
modernc 785 2600 *23765
ncruces 882 3008 31809

Lower numbers are better. * Scorecard point awarded.

freebsd/arm64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn 15046 *27733 55130
modernc 27927 52624 105461
ncruces *14103 28757 *54632

Lower numbers are better. * Scorecard point awarded.

freebsd/arm64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 35972 *58861 *109758
modernc *30068 59023 112350
ncruces 39649 73550 145837

Lower numbers are better. * Scorecard point awarded.

Results: linux/386

  • OS: Devuan GNU/Linux 5 (daedalus)
  • CPU: qemu-system-i386 linux/amd64-0
  • GOMAXPROCS: 2
  • RAM: 4GB
  • Disk: qemu qcow2 (64GB)

linux/386-simple-png

Simple insert query
mattn *2838 1809
modernc 4349 1824
ncruces 4285 *1804

Lower numbers are better. * Scorecard point awarded.

linux/386-complex-png

Complex insert query
mattn *1585 *2016
modernc 2837 2291
ncruces 2727 2556

Lower numbers are better. * Scorecard point awarded.

linux/386-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *35 *169 1587
modernc 39 176 *1573
ncruces 45 193 1618

Lower numbers are better. * Scorecard point awarded.

linux/386-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *73 *137 282
modernc 160 301 533
ncruces 75 142 *274

Lower numbers are better. * Scorecard point awarded.

linux/386-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 499 1054 2081
modernc 493 1035 *2015
ncruces *469 *1029 2037

Lower numbers are better. * Scorecard point awarded.

Results: linux/amd64

  • OS: Devuan GNU/Linux 5 (daedalus)
  • CPU: Intel(R) Celeron(R) J4005 CPU @ 2.00GHz
  • GOMAXPROCS: 2
  • RAM: 8GB
  • Disk: SanDisk SDSSDHII, 447GiB (480GB)

linux/amd64-simple-png

Simple insert query
mattn *6474 3271
modernc 10122 *3220
ncruces 10850 3777

Lower numbers are better. * Scorecard point awarded.

linux/amd64-complex-png

Complex insert query
mattn *3501 *3235
modernc 6522 5139
ncruces 6408 4154

Lower numbers are better. * Scorecard point awarded.

linux/amd64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *81 654 4126
modernc 187 731 5211
ncruces 166 *580 *3735

Lower numbers are better. * Scorecard point awarded.

linux/amd64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *844 *1413 *2496
modernc 1834 3080 5356
ncruces 1134 1668 3382

Lower numbers are better. * Scorecard point awarded.

linux/amd64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 3230 6897 13701
modernc *2989 *6621 *13275
ncruces 3987 8162 16556

Lower numbers are better. * Scorecard point awarded.

Results: linux/amd64-0

  • OS: Devuan GNU/Linux 6 (excalibur)
  • CPU: AMD Ryzen 9 3900X 12-Core Processor
  • GOMAXPROCS: 24
  • RAM: 128GB
  • Disk: NVMe, 476GiB (512GB)

linux/amd64-0-simple-png

Simple insert query
mattn *2153 1125
modernc 3446 *1042
ncruces 3381 1175

Lower numbers are better. * Scorecard point awarded.

linux/amd64-0-complex-png

Complex insert query
mattn *1187 *1190
modernc 2391 1521
ncruces 2226 1716

Lower numbers are better. * Scorecard point awarded.

linux/amd64-0-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *26 *115 1040
modernc 30 117 *993
ncruces 33 131 1118

Lower numbers are better. * Scorecard point awarded.

linux/amd64-0-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn 283 448 1300
modernc 680 1273 2363
ncruces *254 *413 *804

Lower numbers are better. * Scorecard point awarded.

linux/amd64-0-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 1190 1388 1667
modernc *1188 *1350 1699
ncruces 1309 1407 *1660

Lower numbers are better. * Scorecard point awarded.

Results: linux/arm

  • OS: Raspbian GNU/Linux 12 (bookworm)
  • CPU: Cortex-A72 (Raspberry Pi 4 Model B Rev 1.2)
  • GOMAXPROCS: 4
  • RAM: 4GB
  • Disk: SanDisk SD Card SR256, 238GiB (255GB)

linux/arm-simple-png

Simple insert query
mattn *17194 *9995
modernc 27170 12105
ncruces 38746 13313

Lower numbers are better. * Scorecard point awarded.

linux/arm-complex-png

Complex insert query
mattn *8938 *9316
modernc 16257 13125
ncruces 22664 16669

Lower numbers are better. * Scorecard point awarded.

linux/arm-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *170 *930 *8467
modernc 210 1083 10353
ncruces 301 1366 12301

Lower numbers are better. * Scorecard point awarded.

linux/arm-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *264 *459 *681
modernc 646 1088 2019
ncruces 346 508 941

Lower numbers are better. * Scorecard point awarded.

linux/arm-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *2642 *3247 *6147
modernc 2940 3395 7007
ncruces 3463 3850 7576

Lower numbers are better. * Scorecard point awarded.

Results: linux/arm64

  • OS: Raspbian GNU/Linux 12 (bookworm)
  • CPU: Cortex-A76 (Raspberry Pi 5 Model B Rev 1.0)
  • GOMAXPROCS: 4
  • RAM: 8GB
  • Disk: NVMe, 238GiB (256GB)

linux/arm64-simple-png

Simple insert query
mattn *3275 *1634
modernc 5407 1820
ncruces 5774 1774

Lower numbers are better. * Scorecard point awarded.

linux/arm64-complex-png

Complex insert query
mattn *1726 *1842
modernc 3466 2549
ncruces 3628 2745

Lower numbers are better. * Scorecard point awarded.

linux/arm64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *33 *149 *1449
modernc 41 191 1631
ncruces 45 175 1573

Lower numbers are better. * Scorecard point awarded.

linux/arm64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *254 *434 2720
modernc 530 927 2949
ncruces 262 481 *1896

Lower numbers are better. * Scorecard point awarded.

linux/arm64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *1991 *2302 *4507
modernc 2130 2445 4932
ncruces 2166 2652 5567

Lower numbers are better. * Scorecard point awarded.

Results: linux/loong64

  • OS: Fedora Linux 42
  • CPU: loongarch64
  • GOMAXPROCS: 4
  • RAM: 16GB
  • Disk: NVMe, (157GB)

linux/loong64-simple-png

Simple insert query
mattn *5794 3532
modernc 8911 3278
ncruces 9174 *2606

Lower numbers are better. * Scorecard point awarded.

linux/loong64-complex-png

Complex insert query
mattn *2952 3816
modernc 5480 4321
ncruces 5539 *3660

Lower numbers are better. * Scorecard point awarded.

linux/loong64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *79 366 3255
modernc 82 361 3030
ncruces 115 *337 *2380

Lower numbers are better. * Scorecard point awarded.

linux/loong64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *384 *647 *1259
modernc 1055 1669 2680
ncruces 430 752 1496

Lower numbers are better. * Scorecard point awarded.

linux/loong64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 3904 4134 4349
modernc 3638 3988 4197
ncruces *3035 *3268 *3528

Lower numbers are better. * Scorecard point awarded.

Results: linux/ppc64le

  • OS: Debian GNU/Linux 13 (trixie)
  • CPU: qemu hosted on POWER8
  • GOMAXPROCS: 2
  • RAM: 8GB
  • Disk: qemu unknown, 40GiB (42GB)

linux/ppc64le-simple-png

Simple insert query
mattn *6150 3778
modernc 9191 3958
ncruces 8202 *3373

Lower numbers are better. * Scorecard point awarded.

linux/ppc64le-complex-png

Complex insert query
mattn *3469 *3450
modernc 6215 4789
ncruces 5135 3610

Lower numbers are better. * Scorecard point awarded.

linux/ppc64le-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *73 342 2947
modernc 82 388 3494
ncruces 84 *310 *2693

Lower numbers are better. * Scorecard point awarded.

linux/ppc64le-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *101 *155 *311
modernc 274 422 747
ncruces 126 211 380

Lower numbers are better. * Scorecard point awarded.

linux/ppc64le-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *856 1164 2295
modernc 1083 1349 2446
ncruces 990 *1139 *1994

Lower numbers are better. * Scorecard point awarded.

Results: linux/riscv64

  • OS: Ubuntu 22.04.5
  • CPU: riscv64, sifive,bullet0
  • GOMAXPROCS: 4
  • RAM: 16GB
  • Disk: NVMe 917GB

linux/riscv64-simple-png

Simple insert query
mattn *32883 *19265
modernc 54839 20324
ncruces 85831 26410

Lower numbers are better. * Scorecard point awarded.

linux/riscv64-complex-png

Complex insert query
mattn *18459 *17940
modernc 36179 23843
ncruces 52168 36002

Lower numbers are better. * Scorecard point awarded.

linux/riscv64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *334 *1554 *14018
modernc 378 1679 15201
ncruces 602 2537 22468

Lower numbers are better. * Scorecard point awarded.

linux/riscv64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *5488 *10032 20869
modernc 10979 19847 40620
ncruces 6066 11459 *20704

Lower numbers are better. * Scorecard point awarded.

linux/riscv64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *18482 *25105 51866
modernc 22936 25834 *51784
ncruces 28446 33541 65662

Lower numbers are better. * Scorecard point awarded.

Results: linux/s390x

  • OS: "Debian GNU/Linux 12 (bookworm)
  • CPU: qemu-system-s390x linux/amd64-0
  • GOMAXPROCS: 2
  • RAM: 24GB
  • Disk: qemu qcow2 (64GB)

linux/s390x-simple-png

Simple insert query
mattn *58153 27789
modernc 105453 *26611
ncruces 82961 29859

Lower numbers are better. * Scorecard point awarded.

linux/s390x-complex-png

Complex insert query
mattn *32697 *25132
modernc 73457 31898
ncruces 51065 33325

Lower numbers are better. * Scorecard point awarded.

linux/s390x-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *1225 *3101 20997
modernc 1388 3104 *19628
ncruces 1620 3602 22091

Lower numbers are better. * Scorecard point awarded.

linux/s390x-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *15620 *25307 56152
modernc 32948 46296 93532
ncruces 18035 27670 *53363

Lower numbers are better. * Scorecard point awarded.

linux/s390x-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 27025 38590 75567
modernc *24134 *27369 *53798
ncruces 33253 29775 61342

Lower numbers are better. * Scorecard point awarded.

Results: windows/386

  • OS: Windows 10 Pro 22H2
  • CPU: qemu-system-x86_64 linux/amd64-0
  • GOMAXPROCS: 2
  • RAM: 4GB
  • Disk: qemu qcow2 (64GB)

windows/386-simple-png

Simple insert query
mattn *3130 *1706
modernc 4942 1710
ncruces 4767 1992

Lower numbers are better. * Scorecard point awarded.

windows/386-complex-png

Complex insert query
mattn *1802 *1863
modernc 2974 2262
ncruces 2901 2570

Lower numbers are better. * Scorecard point awarded.

windows/386-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *65 *205 *1595
modernc 92 212 1612
ncruces 94 245 1703

Lower numbers are better. * Scorecard point awarded.

windows/386-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *171 6852 *27005
modernc 231 8289 33132
ncruces 208 *4824 31922

Lower numbers are better. * Scorecard point awarded.

windows/386-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *844 *908 *1792
modernc 1055 971 1907
ncruces 1556 2085 2389

Lower numbers are better. * Scorecard point awarded.

Results: windows/amd64

  • OS: Windows 11 Pro 23H2
  • CPU: Intel Pentium G4400T @2.9GHz
  • GOMAXPROCS: 2
  • RAM: 8GB
  • Disk: KGB50ZNT256G LS KIOXIA (238GB)

windows/amd64-simple-png

Simple insert query
mattn *2632 *1227
modernc 4145 1302
ncruces 4848 1597

Lower numbers are better. * Scorecard point awarded.

windows/amd64-complex-png

Complex insert query
mattn *1574 *1416
modernc 2636 1955
ncruces 3290 2365

Lower numbers are better. * Scorecard point awarded.

windows/amd64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *71 205 1182
modernc 91 *189 *1176
ncruces 127 221 1461

Lower numbers are better. * Scorecard point awarded.

windows/amd64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn 2594 4964 19788
modernc 876 1746 20225
ncruces *659 *1318 *18866

Lower numbers are better. * Scorecard point awarded.

windows/amd64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn 2171 *3249 *6745
modernc 2477 4583 8668
ncruces *1923 4088 8047

Lower numbers are better. * Scorecard point awarded.

Results: windows/arm64

  • OS: Windows 11 Pro 23H2
  • CPU: Cortex-A72 (Raspberry Pi)
  • GOMAXPROCS: 4
  • RAM: 8GB
  • Disk: Generic SK64 SD Card (64GB)

windows/arm64-simple-png

Simple insert query
mattn *12116 4888
modernc 18950 *4841
ncruces 25547 6518

Lower numbers are better. * Scorecard point awarded.

windows/arm64-complex-png

Complex insert query
mattn *6474 *4653
modernc 11174 6368
ncruces 14293 7523

Lower numbers are better. * Scorecard point awarded.

windows/arm64-many-png

Many query/N=10 query/N=100 query/N=1000
mattn *295 *714 4727
modernc 363 823 *4654
ncruces 508 1070 6385

Lower numbers are better. * Scorecard point awarded.

windows/arm64-large-png

Large query/N=50000 query/N=100000 query/N=200000
mattn *2822 *5211 15445
modernc 5239 9993 22296
ncruces 3741 7402 *15089

Lower numbers are better. * Scorecard point awarded.

windows/arm64-concurrent-png

Concurrent query/N=2 query/N=4 query/N=8
mattn *5577 *6555 13736
modernc 5618 6646 *13258
ncruces 7038 8240 16685

Lower numbers are better. * Scorecard point awarded.

Documentation

Overview

Package bench collects benchmarks of selected Go SQLite database/sql drivers. The results are found in the README.md file.

On pkg.go.dev click "Expand" above to expand the README file section or use the headings list available on the left of the desktop or above on themobile site to navigate the README file.

Caveat emptor

Mistakes happen. If you find anything wrong about the results please report the problem at the issue tracker, thank you.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL