Как сказать, что в приложении c ++ есть узкое место дискового ввода-вывода? - PullRequest
0 голосов
/ 12 декабря 2018

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

индексный файл выглядит так: (каждая строка называется postlist, который представляет собой отсортированный массив без знакаint и может быть сжато с хорошей степенью сжатия) term1:doc1, doc5, doc8, doc10 term2:doc10, doc51, doc111, doc10000 ... termN:doc2, doc4, doc10

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

  1. поиск терминов и постлистов termj в файле (чтение с произвольного диска)
  2. декодировать постлисты (ЦП)
  3. вычислить пересечение 2 постлистов (ЦП)

Мой вопрос: откуда мне знать, что приложение не может быть более эффективным,это узкое место дискового ввода-вывода?Как я могу измерить, если мой компьютер использовал его диск 100 процентов?Есть ли какие-нибудь инструменты на Linux, чтобы помочь?Существуют ли какие-либо инструменты для измерения дискового ввода-вывода, например, google 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.

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

...