Вадим Румянцев @vadimr
Разработчик аппаратно-программных комплексов
Information
- Rating
- 1,438-th
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Project Manager, Software Architect
Lead
Разработчик аппаратно-программных комплексов
Вот я и говорю – проработка материала в статье на уровне сообразительного школьника. Конечно, есть определённое рациональное зерно в том, что все упомянутые функции действительно существуют и их при случае можно использовать. Но так вот бездумно приравнивать друг к другу в условной компиляции разные по своей сути методы получения времени – если и возможно, то, по крайней мере, это требует значительного количества методических комментариев.
Тогда к чему проблематика Windows?
Собственно, счётчик в процессоре есть во многих архитектурах.
Так вот и хочется знать, в частности, чему равен этот вызов функции в микросекундах (учитывая, что он включает неизвестные нам действия внутри libc и ядра).
Что здесь произойдёт, когда процесс работает более 24 часов?
Ещё навскидку темы, которые хотелось бы видеть освещёнными в подобной статье:
– оценка случайной и систематической составляющей погрешности измерения;
– как момент вызова функции и момент возврата из функции соотносятся с моментом фиксации показаний таймера (в том числе, чему равен оверхед от её собственной работы, как разность между этими значениями);
– что происходит, когда ОС в процессе бенчмаркинга синхронизирует время по NTP и начинает подводить таймеры;
– что происходит при переполнении коротких таймеров;
– там автор в коде зачем-то работает с минутами и часами, что вызывает очевидный вопрос, что происходит в его функции с переходом через полночь, и менее очевидный вопрос, что происходит с удлинёнными минутами по 61 секунде (чем дальше, тем они появляются чаще в связи с удлинением астрономических суток).
В общем, на мой взгляд, такая важная и сложная тема, как измерение времени на компьютере, раскрыта автором оригинальной статьи весьма поверхностно.
Формально, термин “процессорное время” означает реальное время, занятое выполнением задачи на процессоре, то есть сумму предоставленных ей (или в её интересах) квантов времени.
Если Вы говорите о “процессорном времени” в смысле привязки к единицам тактовой частоты процессора вместо реальных секунд, то даже для бенчмаркинга это требует определённых оговорок, как и вообще всякие махинации с единицами измерения. Обычно, пользователя всё-таки интересует, какова производительность системы, приведённой к реальным единицам времени, а не с использованием удлинённых или укороченных секунд наугад взятого процессора с поехавшим тактовым генератором.
Конечно, если вы своим бенчмаркингом сравниваете два процесса на одном и том же процессоре (и даже одной и той же модели процессора), то это неважно. Но если вы хотите как-то распространить результат на другие системы, то единицы процентов, которые при известном стечении обстоятельств можно получить за счёт погрешности генератора, могут оказаться заслуживающими внимания.
В общем, статья скорее освещает тему “как написать переносимый враппер над функциями библиотеки Си для получения времени”, чем “как измерять время”.
Менеджмент – это искусство компромисса между возможностями трудового коллектива и требованиями бизнеса. К достижению этого компромисса можно двигаться с разных сторон, и тут дело зависит от индивидуальных качеств руководителя, а не от того, каким именно путём он к этому пришёл. Хотя, конечно, наличие технического образования неплохо сказывается на руководстве инженерным предприятием. Но мне встречались абсолютные приспособленцы, разваливающие всё, имеющие профильное образование и степень к.т.н., также как и классные руководители, что называется, “от сохи”.
Разумеется, проблема вненациональна. И вряд ли проблемы регистрации юридических лиц имеют вообще какое-то влияние на жизнь программиста с горящим взглядом.