Как определить, что у приложения на С ++ есть узкое место дискового ввода-вывода?

Я работаю над «поисковым» проектом. Основная идея заключается в том, как создать индекс, чтобы ответить на поисковый запрос как можно быстрее. Входные данные — это запрос, такой как «termi termj», а выходной — это документы, в которых появляются термины и termj.

индексный файл выглядит следующим образом: (каждая строка называется postlist, который представляет собой отсортированный массив unsigned int и может быть сжат с хорошей степенью сжатия)

term1:doc1, doc5, doc8, doc10
term2:doc10, doc51, doc111, doc10000
...
termN:doc2, doc4, doc10

3 основных времени возобновления процедуры

  1. искать в файле список терминов и список терминов (случайное чтение с диска)
  2. расшифровать постлисты (процессор)
  3. рассчитать пересечение 2 постлистов (процессор)

Мой вопрос: как я могу узнать, что приложение не может быть более эффективным, оно имеет узкое место дискового ввода-вывода? Как я могу измерить, если мой компьютер использовал его диск 100 процентов? Есть ли какие-нибудь инструменты на Linux, чтобы помочь? Есть ли какие-то инструменты, которые могут измерить дисковый ввод / вывод как Google Cpu Profiler можно измерить процессор?

Моя развивающая среда — Ubuntu 14.04.

CPU: 8 cores 2.6GHz
disk: SSD
benchmark now is about 2000 queries/second, but I don't know how to improve it.

Любое предложение будет оценено! Большое спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]