пятница, 27 ноября 2009 г.

Как отлавливать лаги в программе


Стоит взять метод на вооружение:
Природа лагов может быть разной, но сейчас речь пойдет о внутрисерверных лагах. То есть когда процесс игрового сервера, вместо того чтобы быстро обрабатывать запросы игроков, длительно тупит, занимаясь чем-то непотребным.

Чтобы выяснить, чем же именно непотребным занимается сервер во время лагов, была сделана очень простая штука: lag detector. Это специальный thread, который каждые 50 миллисекунд просыпается и смотрит на счетчик внутреннего цикла основного рабочего потока. Если счетчик не менялся уже длительное время (например, 200 миллисекунд), то что-то не в порядке. Lag detector пишет в лог сообщение об ошибке и call stack основного потока.

Получился эдакий самопальный профилировщик, но встроенный прямо в боевой сервер и срабатывающий, только когда надо. Виновных определяет на раз. Даже если сервер вдруг подлагнул позавчера во вторник в полтретьего ночи.

воскресенье, 22 ноября 2009 г.

Отличие операции приведения типа от оператора as

По ссылке - подробнее, а основное вот:

Во-первых, поскольку результатом оператора «as» может быть null, целевым может быть только такой тип, который допускает значение null: либо ссылочный тип, либо Nullable тип-значение. Нельзя сделать «as int», это не имеет никакого смысла. Если аргумент не int, то каким должно быть возвращаемое значение? Выражение «as» всегда возвращает указанный тип, так что он должен быть типом, допускающим null.


Оператор «as» не станет делать изменяющие представление преобразования из short в nullable int, как стал бы оператор приведения. Аналогично, если у вас есть класс Alpha и несвязанный с ним класс Bravo, с пользовательским оператором преобразования из Bravo в Alpha, то «(Alpha)bravo» применит это преобразование, а «bravo as Alpha» – нет. Оператор «as» учитывает только ссылочные преобразования, и упаковку/распаковку типов-значений.

А то по незнанию можно и нарваться :)

среда, 11 ноября 2009 г.

Новое в .Net Framework 4 beta 2 (продолжение)

Thread-safe структуры данных .NET 4 (ч.2) - описание одной, но зато очень полезной структуры
Краткий обзор Parallel Extensions для .NET Framework - ну очень краткий, но все равно почитать стоит