SD
Very efficient flash cards app using Go and SQLite
Performance
SD is designed to be extremely efficient in order to support a very large number of flash cards and should be able to handle several billion cards with ease. If N is the number of cards, initializing the program requires O(N) time and O(N) memory. Selecting a random card and adjusting its weight based on if the user got it correct requires O(log N) time.