2016-01-27 5 views
0

У меня есть программа, которая читает в длинном списке слов из текстового файла с перенаправлением командной строки. Нет потоков файлов.Почему моя программа на C++ использует больше системного времени, чем время выполнения?

Данные принимаются с использованием getline(cin, string) и считывают его в вектор. Затем моя программа обрабатывает данные. Он также использует динамическую память (не уверен, что этот факт имеет значение).

Почему я получаю эту ошибку:

Warning: Your program used more system time (0.001 sec) than user time (0.000 sec). 
    This may be due to excessive I/O, overly frequent time measurement 
    (via getrusage for example), or unnecessary system calls. 
+3

Вы знаете, откуда берется предупреждение? Может быть, какой-то профилировщик? Я этого раньше не видел. – immibis

+0

Фактически, Google возвращает * нулевые результаты * для '« Предупреждение: ваша программа использовала больше системного времени »' – immibis

+0

Что касается системного и пользовательского времени, вы можете прочитать [этот вопрос] (http://stackoverflow.com/q/556405/3959454) –

ответ

1

Ваш код чтения и записи файлов, что приводит к open(), read() и write() системные вызовы и другие. Время «Пользователь» и «Система» - это время процессора, затрачиваемое в пользовательском пространстве и системном/ядерном пространстве, соответственно. Ядро может также использовать несколько процессоров, поэтому иметь гораздо большее «время процессора», чем «реальное время», не является чем-то странным.

Не знаю, какой инструмент для профилирования вы используете, чтобы сообщить вам об этом, поскольку Google ничего не придумал, но инструмент неправильный. Здесь нет проблем.

 Смежные вопросы

  • Нет связанных вопросов^_^