Я пытался решить проблему на 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 не выделяется время, которое я тратил на ввод-вывод, а скорее, кажется, виноват мой алгоритм.