2016-06-16 2 views
1

Мой учитель всегда говорил, что мы не должны писать одну и ту же часть кода более одного раза во время программирования. Но должен ли код, приоритет которого должен быть надежным & быстро использовать класс и методы вместо того, чтобы записывать один и тот же код когда-либо? Вызов класса требует немного больше времени, чем прямой код ?!Неужели общественный класс и методы замедляют ваш код?

Например, если я хочу сделать это:

Program1.Action1(); 
Program1.Action2(); 
Program1.Action3(); 
& 
Program2.Action1(); 

и т.д. и т.д. и т.п.

, и я хочу, чтобы эти действия были выполнять быстрый, как это возможно, Могу ли я назвать действия() или написать вниз полный код ?!

Adnt его вопрос приводит к другому: Для проекта мы должны сделать его легко читаемым учителем, поэтому у нас есть много «вкладок класса» на визуальной студии, мы делаем все общедоступным, и мы называем наш класс или методов в нашей основной форме.

Хорошо, это довольно организованный, очень легкий для чтения, НО не делает код замедленным ?! Является ли общедоступная вкладка «класс» медленнее, чем частный класс в нашей основной форме ?! Я ничего не нашел в любом месте. Спасибо.

+0

Вы не сможете обнаружить различий в производительности. Компилятор также может сделать это в технике оптимизации, называемой ** inlining **, см. [Здесь] (http://www.dotnetperls.com/inline-optimization). – Maarten

+1

Кнут сказал, что это лучше всего: «Программисты тратят огромное количество времени на размышления о скорости некритических частей своих программ или беспокоятся о скорости их некритических частей, и эти попытки эффективности действительно оказывают сильное негативное влияние при рассмотрении отладки и обслуживания. о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация - корень всего зла, но мы не должны упускать наши возможности в этих критических 3% ». – TerraPass

+0

Путь к тому, чтобы быть продуктивным * - это не постоянно спрашивать, является ли этот код самым быстрым? но спросить «этот код быстро * достаточно *?» Но единственный способ ответить на этот вопрос - установить четкие * цели * и затем измерить *. –

ответ

1

У вас есть один главный вопрос и некоторые проблемы.

Позвольте мне обратиться к ним отдельно; сначала: государственные и частные не являются, по сути, более быстрыми или медленными. Компилятор мог бы, теоретически, оптимизировать больше при использовании частных методов, но я не думаю, что есть много случаев, когда это может иметь значение. Итак, короткий ответ НЕТ, публика не замедляет ваш код.

Простой вызов функции имеет незначительную стоимость. Если вы не программируете цикл кода с хрустком, превышающий миллион и миллион раз, стоимость какого-либо вызова функции не вызывает беспокойства.

Итак, если у вас нет проблем с производительностью, вы не должны заботиться о них. Сделайте себе одолжение, учась, и напишите это 10 раз: если у вас нет проблем с производительностью, вы не должны заботиться о них.

Вы должны сконцентрироваться на читаемости кода и алгоритмической сложности, а не на микро оптимизации, которая может или не может улучшить «производительность», но может легко усложнить код и создать ошибки.

Прост в чтении и тестировании имеет первостепенное значение (осмелюсь сказать)? 98% разработанного программного обеспечения.

+0

Первой целью моей программы является определенная скорость, мне нужно получить несколько мс, 2 или 3 будет идеально. Так что да, у меня проблемы с производительностью, поэтому я должен заботиться об этом! После того, как вы четко выразили свою точку зрения, я не могу сказать, что никогда не буду заботиться о производительности, если у меня нет проблем с ними! В любом случае спасибо за ваш ответ! – jsls

+0

Ваш метод звонит в узкой петле? Вы используете лучший алгоритм? Вы прокомментировали свой код? Оптимизация производительности без профилирования похожа на ловушку в темноте. –

+0

Я собираюсь попробовать valgrind сегодня. На самом деле я не знал оптимизацию производительности ... это будет БОЛЬШАЯ помощь, спасибо! (это именно то, что мне нужно!) – jsls

4

Вы всегда можете рассмотреть профилирование производительность.

Но на самом деле вам следует полагать, что C# будет лучше, чем вы, при выборе такого кода при компиляции кода.

То, о чем вы заявляете в своем вопросе, кажется мне ненужными микрооптимизациями, которые, вероятно, не составят разницы.

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

+0

Каждый мс - большая победа для меня, поэтому каждый маленький разброс хорош для меня :) и да, поскольку вы, конечно же, замечаете, что я не совсем понимаю, как работает компиляция, и почему я спросил об этом. – jsls