Сколько времени занимает с ++, чтобы открыть файл - PullRequest
0 голосов
/ 16 ноября 2011

Я пытаюсь определить причину, по которой мой код работает примерно в четыре раза медленнее, чем я думал.

В моем коде я повторяю цикл 100000 раз. Каждые 500 циклов я печатаю строку в файл (открываю ее в режиме добавления, печатаю и закрываю). Возможно ли, что на приличном компьютере (кластер HPC) это превращает 12-часовой запуск в 48-часовой?

Надеюсь, мой вопрос понятен.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Попробуйте запустить тест A / B:

В тесте A ведите запись в журнал, как вы описываете - откройте и закройте файл для каждого сообщения журнала.

В тесте B попробуйтеоткрывать файл в самом начале, держать его открытым в течение всего цикла и закрывать его только при выходе из программы.

Время, необходимое для открытия и закрытия файлов, будет зависеть от вашей операционной системы, реализации библиотеки C IOи ваша подсистема хранения.Я подозреваю, что тест B будет быстрее, но для уверенности вам нужно провести несколько экспериментов на своем программном и аппаратном обеспечении.

1 голос
/ 16 ноября 2011

Просто сделайте паузу несколько раз и посмотрите на стек.То, что делает это, занимает в 4 раза больше времени, и будет примерно на 3 из 4 стековых сэмплов.Вы не можете пропустить это.

Возможно, проблема заключается в открытии / закрытии файлов, но я сомневаюсь, если вы делаете это только 200 раз.Во всяком случае, нет необходимости выдвигать гипотезы.Просто сделайте паузу несколько раз и определите, в чем проблема.

...