Вот статистика по проведенному эксперименту
overflow [4] - число переполнений буфера входящих данных
flush [4879] - число опустошений этого буфера
words [102104] - число слов, из которых потом генерировались
комбинации
ip [17758789] - число уникальных комбинаций. Это то, что как раз
помещается в индекс
hit ip [11215320] - это число обращений к кэшу, которые нашли ранее
сгенерированную комбинацию
d_pages [30010] - число грязных страниц кэша
c_pages [90000] - число чисты страниц кэша
BlockCapacity:127 - число элементов на блоке списка (короче на - на
одной странице)
Далее число блоков в списке / количество списков с такой длиной
13:14
14:5287
15:4681
16:18
Общее число списков в хеш-таблице - 10000. Размер кэша 120010 страниц.
Как видно -таблица заполняется равномерно.
Скорость упала в районе 14.5 млн комбинаций. Это как раз кэш
закончился. Упала с 25 тысяч комбинаций до 300-400 комбинаций (это
финальная скорость). Ассинхронная работа с файлом не помогла - хотя
работало 4 потока генерации. Сразу после того как кэш закончился,
поток выгрузки модифицированных страниц, стаблизировал соотношение 30
тыс / 90 тыс, и оно не менялось до самого финиша (+/- 10 страниц).
Я наверное не понимаю чего-то... Эти ID1, ID2 ты ж ведь из базы выбираешь.
Почему их нельзя выбирать в нужном порядке? Так чтоб страницы твоей
HashTable последовательно заполнялись. Тогда просто заполнилась очередная
страница и встала в очередь на запись...
With b/r. Gleb.