O Apache manipula os hosts virtuais com bastante eficiência usando uma tabela de hash. A documentação diz:
During initialization a list for each IP address is generated and
inserted into an hash table. If the IP address is used in a
NameVirtualHost directive the list contains all name-based vhosts for
the given IP address. If there are no vhosts defined for that address
the NameVirtualHost directive is ignored and an error is logged. For
an IP-based vhost the list in the hash table is empty.
Due to a fast hashing function the overhead of hashing an IP address
during a request is minimal and almost not existent. Additionally the
table is optimized for IP addresses which vary in the last octet.
Eu vi servidores Apache com mais de 1000 hosts virtuais, e o desempenho não foi notavelmente pior do que um servidor Apache com 10 hosts virtuais.