Как стать автором
Обновить

Комментарии 38

Наставить слипов, потом удалить их. «Я оптимизировал код».
Profit!
Есть рассказ на эту тему: The Speedup Loop.
Люди задел себе оставляли на пару лет работы, а тут раз — и спалили…
НЛО прилетело и опубликовало эту надпись здесь
В других ОС производительность больше выросла, там же Sleep на 1 наносекунду больше был.
2 мс в обоих случаях же
Windows не умеет делать Sleep меньше чем на 10 мс, поэтому Sleep(1) имеет такой же эффект как и Sleep(10)
а «else...nanosleep()» в удаленном коде ни о чем не говорит?
Обратите внимание на начало строк, там стоят минусы, т.е. весь этот блок кода был удалён, а директива препроцессора #if OS(WINDOWS) означает лишь, что в Windows API есть готовая функция Sleep, которой на Unix нету.
Скорее в Windows нет функции nanosleep, т.к. sleep в unix системах с рождения.
Агу, вы правы.
А всё-равно ламерство так писать. Должна быть единая в рамках кода функция sleep() (ну или nanosleep()), которая бы вызывалась отовсюду, а уже в ней должен быть этот #if
Агу, у нас в DC++ так и написано, свои обёртки поверх системных апи.
уменьшить размер кода

Желтизна даже в этом предложении
Увидел непонятный работающий кусок кода. Закомментировал.
Все правильно сделал!
Исправили это на Sleep(0). Т.е. там нужно все-таки было отдать управление в шедулер. Откуда там двойка была, как и на что она влияла — это надо еще посмотреть.
черт с ней с двойкой, у кого-то есть версии, почему на других ОС надо было спать на 1 наносекунду дольше?
на промежутках <=2 мс задержка циклом на softreal-time задачах
Что?
то есть вместо того чтобы ждать сигнала от ядра, программа крутит цикл загружая процессор
А, теперь понятно. А число «2мс» — это из какого-то стандарта, или просто так по факту реализовано? Да еще и с разницей "<" vs "<=" на разных ОС?
НЛО прилетело и опубликовало эту надпись здесь
Связано это не с переключением контекста, а с минимальным разрешением таймеров. Отчасти может помочь timeBeginPeriod.
А вообще поведение sleep и должно быть непредсказуемым. Передаваемое значение — это нижняя граница.
>>Это наглядный пример, как одна маленькая оптимизация способна в несколько раз повысить производительность.

Это наглядный пример как программисты пишут код не понимая как он работает- находят багу, которая мистическим образом исчезает если добавить кусок кода, который, по идее и никак не связан с этим, но всё фиксит, и вместо того что бы искать корни проблемы оставить как есть.
За поиски корней никто не заплатит, а если быстрый фикс даёт на выходе нормально работающую систему, то это и есть то, что всем нужно. Тем более, что эти корни обычно где-нибудь во внешнем компоненте, для которого нет исходников или который нельзя менять.
Эдак можно дом из костылей построить.
Ой сколько систем, даже вполне промышленно выглядящих, так построено…

Про веб-системы даже не буду говорить. Популярные CMS-ки, например, будут хорошим примером: ввиду тяжелого наследия прошлого убрать старые костыли в них боятся, а новые разработки привыкшие к костылям разработчики пишут — ага, на тех же костылях. Все матерятся, но что толку?
А может сейчас этот воркэраунд уже не актуален? Хотя с другой стороны это может быть заляпуха для многопоточной работы.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Я уже столько раз натыкался на то, что код неиллюзорно ускорялся от убирания сто лет непонятно зачем валявшегося там слипа, что уже подумываю о том, что компилятор должен на каждый встреченный слип выдавать warning. И чтоб этот warning отключался только если рядом со слипом указан комментарий ненулевой длины нафига он тут засунут.
Ага… мне нравится ход ваших мыслей ;) А потому люди начнут натыкаться на то, что код начнет неиллюзорно ускорятся от убирания сто лет непонятно зачем валявшегося там комментария ненулевой длины рядом с двести лет непонятно зачем валявшегося там слипа, и начнут подумывать над тем, что компилстор должен выдавать на каждый встреченный комментарий рядом со слипом warning и чтобы этот warning отключался, если рядом с комментарием рядом со слипом указан комментарий ненулевой длины нафига он тут засунут… чтобы еще через сто лет получить неиллюзорное ускорение от выпиливания слипа с двумя комментариями ;)
Да, борьба с «warningами компилятора» она такая, ня;)
@SuppressWarning(«unchecked»)
Chrome тоже должен ускориться?
Нет, речь только о браузерах.
С разделом не ошиблись? Мне кажется, стоило в хабраюмор.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории