Хорошо известно, что на счастливом пути (без ошибок) исключения превосходят коды ошибок. В этом случае исключения являются истинной абстракцией с нулевой стоимостью, а коды ошибок-нет. На печальном пути (когда на самом деле возникают ошибки) коды ошибок обычно бьют исключения в производительности. < /P>
Таким образом, при выборе между исключениями и кодами ошибок мы должны рассмотреть частоту ошибок: < /p>
, если частота ошибок относительно высокая, коды ошибок более лучше. < /P>
< /br /li>
. Низкий, исключения лучше. < /p>
< /li>
< /ul>
bjarne stroustrup, когда -то предложил грубую границу «около 1%» в качестве переломного момента. < /p>
Но какова эта частота ошибок? Чье частота ошибок мы говорим? Родительский узел - абонент, а его дети - Callees. У каждого родителя может быть несколько детей. Чтобы измерить «частота ошибок» в узле, возьмите этот узел в качестве корня и рассмотрите весь поддерек под ним. Общее количество узлов составляет: < /p>
b^0 + b^1 + b^2 + ... + b^n = (b^(n + 1) - 1) /(b - 1) = O (b^n) < /p>
Если b фиксируется и N увеличивается, количество узлов растет экспоненциально. Поскольку каждый узел должен проверить код ошибки, производительность кода ошибки ухудшается экспоненциально. Опять же, каждый узел должен проверить код ошибки, поэтому производительность ухудшается полиномиально. Как только ошибки введены, мы должны рассмотреть показатели ошибок. Здесь соответствующая метрика - это частота ошибок корневого узла. Таким образом, на практике один из способов моделирования этого состоит в том, чтобы предположить, что только конечный листовой узел не удается с данной вероятностью, и эта вероятность является частотой ошибки корня. < /P>
В моем собственном тестировании высота дерева = 5, а коэффициент ветвления = 3, когда уровень ошибок корня составляет около 0,2 (20%), производительность кодов ошибок и исключения становится приблизительно равным. Это не 0,02, а 0,2 - 20% частота ошибок, что уже чрезвычайно высока! Если частота ошибок ниже 20%, исключения превосходят коды ошибок. В реальных проектах деревья часто бывают глубже и шире. С немного большими значениями, частота ошибок разрыва еще больше увеличивается, что делает исключения еще более выгодными. < /P>
Мое моделирование здесь может быть немного грубым. Что ты думаешь?
Подробнее здесь: https://stackoverflow.com/questions/797 ... -tests-are
В реальных инженерных проектах, а не в конкретных тестах на сравнение, исключения действительно медленнее, чем коды ошиб ⇐ C++
Программы на C++. Форум разработчиков
1758799490
Anonymous
Хорошо известно, что на счастливом пути (без ошибок) исключения превосходят коды ошибок. В этом случае исключения являются истинной абстракцией с нулевой стоимостью, а коды ошибок-нет. На печальном пути (когда на самом деле возникают ошибки) коды ошибок обычно бьют исключения в производительности. < /P>
Таким образом, при выборе между исключениями и кодами ошибок мы должны рассмотреть частоту ошибок: < /p>
, если частота ошибок относительно высокая, коды ошибок более лучше. < /P>
< /br /li>
. Низкий, исключения лучше. < /p>
< /li>
< /ul>
bjarne stroustrup, когда -то предложил грубую границу «около 1%» в качестве переломного момента. < /p>
Но какова эта частота ошибок? Чье частота ошибок мы говорим? Родительский узел - абонент, а его дети - Callees. У каждого родителя может быть несколько детей. Чтобы измерить «частота ошибок» в узле, возьмите этот узел в качестве корня и рассмотрите весь поддерек под ним. Общее количество узлов составляет: < /p>
b^0 + b^1 + b^2 + ... + b^n = (b^(n + 1) - 1) /(b - 1) = O (b^n) < /p>
Если b фиксируется и N увеличивается, количество узлов растет экспоненциально. Поскольку каждый узел должен проверить код ошибки, производительность кода ошибки ухудшается экспоненциально. Опять же, каждый узел должен проверить код ошибки, поэтому производительность ухудшается полиномиально. Как только ошибки введены, мы должны рассмотреть показатели ошибок. Здесь соответствующая метрика - это частота ошибок корневого узла. Таким образом, на практике один из способов моделирования этого состоит в том, чтобы предположить, что только конечный листовой узел не удается с данной вероятностью, и эта вероятность является частотой ошибки корня. < /P>
В моем собственном тестировании высота дерева = 5, а коэффициент ветвления = 3, когда уровень ошибок корня составляет около 0,2 (20%), производительность кодов ошибок и исключения становится приблизительно равным. Это не 0,02, а 0,2 - 20% частота ошибок, что уже чрезвычайно высока! Если частота ошибок ниже 20%, исключения превосходят коды ошибок. В реальных проектах деревья часто бывают глубже и шире. С немного большими значениями, частота ошибок разрыва еще больше увеличивается, что делает исключения еще более выгодными. < /P>
Мое моделирование здесь может быть немного грубым. Что ты думаешь?
Подробнее здесь: [url]https://stackoverflow.com/questions/79774746/in-real-world-engineering-projects-and-not-in-specific-benchmarking-tests-are[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия