Производительность ввода C ++

Я пытался решить проблему на InterviewStreet. Через некоторое время я определяю, что на самом деле тратил большую часть своего времени на чтение ввода. В этом конкретном вопросе было много комментариев, так что в этом есть некоторый смысл. Что не имеет смысла, так это то, почему разные методы ввода имели такую ​​разную производительность:

Изначально у меня было:

std::string command;
std::cin >> command;

Замена сделала его заметно быстрее:

char command[5];
cin.ignore();
cin.read(command, 5);

Переписав все для использования scanf, он стал еще быстрее

char command;
scanf("get_%c", &command);

В общем, я сократил время чтения ввода примерно на 1/3.

Мне интересно, есть ли такие различия в производительности между этими разными методами. Вдобавок мне интересно, почему при использовании gprof не выделяется время, которое я тратил на ввод-вывод, а скорее, кажется, виноват мой алгоритм.

8
задан Winston Ewert 1 February 2012 в 16:03
поделиться