LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.

2. У тебя проблема в логике программы.

Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.

Но вот в деструкторах, ты, скорее всего делаешь слишком много.

Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Может закрывать более жестко, как сделала бы ОС, если программу убить по kill -9? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).

Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.

Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.

Значит в деструкторах ты делаешь что-то лишнее.

Мне выгодней упасть и перезапуститься

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

Исправление Kroz, :

1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.

2. У тебя проблема в логике программы.

Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.

Но вот в деструкторах, ты, скорее всего делаешь слишком много.

Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Может закрывать более жестко, как сделала бы ОС, если программу убить по kill -9? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).

Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.

Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.

Значит в деструкторах ты делаешь что-то лишнее.

Мне выгодней упасть и перезапуститься

Вот и родился еще один антипаттерн.
Сейчас пойдет поколение программ, которые опираются на авто-хилинги. (Дальше остались одни нецензурные слова).

Исправление Kroz, :

1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.

2. У тебя проблема в логике программы.

Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.

Но вот в деструкторах, ты, скорее всего делаешь слишком много.

Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Может закрывать более жестко, как сделала бы ОС, если программу убить по kill -9? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).

Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.

Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.

Значит в деструкторах ты делаешь что-то лишнее.

Исходная версия Kroz, :

1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.

2. У тебя проблема в логике программы.

Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.

Но вот в деструкторах, ты, скорее всего делаешь слишком много.

Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).

Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.

Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.

Значит в деструкторах ты делаешь что-то лишнее.