Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 09.07.2013, 03:06   #1
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Подсказки по улучшению C# кода. Часть 1

1. А вы используете механизм исключений для проверки ввода пользователя?
Если да, то вы замедляете выполнение примерно в 56 раз.
Например, вы проверяете данные что ввел пользователь и если что то не так - выбрасываете исключение:
Код:
public void Check()
    {
        try
        {
            //код проверки
           
        }
        catch (Exception ex)
        {
            throw new Exception("Что то не так");
        }
 
    }
Теперь покажем что так делать не стоит:
Код для проверки
Результат:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Доказательство довольно просто. В одной функции я выкидываю Exception во второй возвращаю булевское значение после проверки ввода. На скрине время выполнения в тиках 1й и 2й функции.
Вывод:
"Не вызывайте исключения для проверки данных вводимых пользователем. Используйте булевские значения для этого." Потому что объекты исключения обходятся довольно дорого.


2. Не используйте try-catch внутри цикла, если этого можно избежать.
Код проверки:
Код
Результат:
[Ссылки могут видеть только зарегистрированные пользователи. ]

3. Вы достаточно безумны что бы использовать оператор new для типа int?
Часто можно встретить ошибку "Unassigned local variable" или если перевести: "Не объявленная локальная переменная"

Код

Результат:
[Ссылки могут видеть только зарегистрированные пользователи. ]
В 2.333(3) раз больше...

4. Функция это хорошо, но не всегда
Вообще хорошим тоном считается разбивать код на функции и да, это действительно хорошо для некоторых заданий. Есть тысячи преимуществ у функций, но они же могут снизить производительность приложений. Я не говорю что функции это плохо, но их вызов дорогостоящая операция.
Пример:
Код
Результат:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Хм, примерно в 20 раз дольше....

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

На самом деле единицы из знакомых мне разработчиков используют структуры, но они явно никогда не проводили замеры производительности.
Давайте проведем тест:
Код
Результат:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Время создания объектов класса немножко больше чем в 16 раз больше чем для структуры... Более чем очевидно что структуры намного быстрее чем класс. И опять же программа была скомпилирована в режиме Release с включенными оптимизациями.

PS: Все исходники были скомпилированы в режиме "Release" с включенными оптимизациями. Возможно небольшое различие между результатами отображенными на скринах и теми что получите вы, поскольку на время выполнения влияет также загруженность процессора, оперативки и тд. По возможности я старался выбирать средние результаты, были и хуже...
  Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
артём612 (16.07.2013), Буянь (10.07.2013), iamzero (17.07.2013), mould (04.08.2013), the-boxi (30.01.2014), warl0ck (15.07.2013)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Предложение по улучшению форума Diamant О портале Zhyk.Ru 8 19.08.2011 10:08
Помощь по улучшению сервера _Coca-Cola_ Perfect World 6 04.02.2011 14:41
[Информация] Способы внедрения кода. Часть 1 - начало. megaKAKER С/С++ 0 11.12.2010 01:52

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:18.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net