No OpenBSD , o banco de dados de localização é, por padrão, reconstruído uma vez por semana pelo /etc/weekly script chamando /usr/libexec/locate.updatedb como usuário nobody .
O utilitário locate.updatedb é um script /bin/sh ( pdksh no OpenBSD) que mais ou menos executa find nos sistemas de arquivos raiz. Qualquer coisa que nobody possa acessar é colocada no banco de dados de localização.
Acho difícil acreditar que find / seria mais rápido que locate em um sistema no qual locate usa um banco de dados de arquivos criado por meio de find / .
A diferença é, obviamente, que você pode encontrar mais arquivos executando find como um usuário que tenha mais acesso do que o usuário nobody .
No Linux , pelo menos na máquina Ubuntu a que tenho acesso no trabalho, o banco de dados locate parece ser recriado diariamente, de acordo com o manual locate(8) . Isso é feito através do utilitário updatedb .
Este utilitário (um link simbólico para /usr/bin/updatedb.mlocate nesta máquina) é um binário compilado pertencente ao pacote mlocate .
Você pode dar uma olhada em as fontes de mlocate se quiser, mas é basicamente um programa em C que atravessa o sistema de arquivos. mlocate também tenta evitar a passagem de bits do sistema de arquivos que não mudou entre as execuções.
Mais uma vez, acho difícil acreditar que consultar o banco de dados mlocate seria mais lento (sob quaisquer circunstâncias) do que executar find / .
No final do dia, é por isso que todas as ferramentas locate (que eu conheço) funcionam em um banco de dados.