|
August 31st, 2011
12:46 am - Мелкоглюк На днях, разбираясь с утилитой, обнаружил, что её очень тормозит вывод сообщений в консоль. Там в цикле (как оказалось потом, по 3.5Е6 элементам) на каждой итерации писалось "номер такой-то загружен" и возврат каретки. Не, я знал, что вывод в консоль тормозит, но не ожидал, что настолько. Поначалу я грешил на добавленный в семёрке пятое колесо conhost.exe, позволяющий хомячкам натягивать свои уютненькие темки на консольное окно. Но, как показала практика, Колумб почти не виноват. Чтобы не быть голословным, я смоделировал свою проблему, обвязал бенчмаркой и запустил разных средах. Ну чо, под семёркой разница во времени исполнения между наличием и отсутствием вывода в консоль составила 300 раз. Соответственно, под XP эта разница упала аж до 250 раз. То есть, похоже, несчастный conhost, таки добавляет тормозов в консоль, но на фоне двух порядков разницы эта добавка не так уж и важна. Ну и контрольная проверка на линухе: разница составляет 3 (прописью: три) раза. Правда, на линухе стоит простенький WindowMaker, и для полноты правильности надо бы проверить на линуховой машине с няшненьким полупрозрачным терминальчиком.
А дальше я решил посмотреть, как поведут себя разные языки в разных средах.
OS |
C |
C++ |
C# |
Win7 |
130 |
300 (23) |
200 (0,67) |
Win8 |
130 |
N/A |
180 (0,86) |
WinXP |
170 |
250 (12) |
150 (0,75) |
Interix |
4 |
10 (23) |
200 (23) |
Linux |
3 |
3 (8) |
110 (103) |
Цифры в скобках — это отношение времени вывода в консоль на данном языке к выводу на С. UPD:Цифры без скобок — это отношение времени выполнения с выводом в консоль к времени выполнения без вывода. UPD2: Добавил данных по Win8 (15.09.11)
|
12:14 pm - В догонку Распределение CPU по процессам во время работы cpp-тестов из предыдущего поста.

Uploaded with ImageShack.us
Первый conhost — от окна консоли Windows 7, второй — от окна Informix'а.
|
|
|
|
LJ.Rossia.org |