Я хотел бы добавить, что способность dotTrace различать память и сеансы трассировки производительности абсолютно неоценима (ANTS также может иметь функцию различий в памяти, но я не видел различий в производительности).
Будучи в состоянии запустить сеанс профилирования до и после исправления ошибки или улучшения, сравните результаты невероятно ценно, особенно с гигантским унаследованным приложением .NET (как в моем случае), где производительность никогда не была приоритетом и где поиск узкие места могут быть ОЧЕНЬ утомительными. Выполнение различий до и после позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода .
Это полезно не только во время изменения кода, но также и в том случае, если у вас есть приложение, которое использует разные базы данных, скажем, для каждого клиента / клиента. Если один клиент жалуется на медлительность, вы можете запустить сеанс профилирования, используя его базу данных, и сравнить результаты с «быстрой» базой данных, чтобы определить, какие операции способствуют замедлению. Конечно, существует много инструментов для повышения производительности на стороне базы данных, но иногда я действительно помогаю увидеть показатели производительности со стороны приложения (так как это ближе к тому, что на самом деле видит пользователь).
Итог: dotTrace отлично работает, и diff бесценен.
Попробуйте:
2**3*2
и
2*3*2
, чтобы увидеть разницу.
**
- оператор для "степени". В вашей конкретной операции 2 в степени 2 дает то же, что и 2, умноженные на 2.
Чтобы конкретно ответить на ваш вопрос Почему используется code1, если мы можем использовать code2? Я могу предположить, что программист думал в более широком математическом смысле. В частности, возможно, более широкое уравнение - это уравнение мощности, и тот факт, что оба первых числа равны «2», является скорее совпадением, чем математической реальностью. Я хотел бы убедиться, что более широкий контекст кода поддерживает его значение
var = x * x * y
во всех случаях, а не только в этом конкретном случае. Это может доставить вам большие неприятности, если x не равно 2. 2**2 means 2 squared (2^2)
2*2 mean 2 times 2 (2x2)
В этом случае они имеют одно и то же значение, но ...
3**3*4 != 3*3*4
Двойные звезды ( **
) - это возведение в степень. Итак, «2 умножить на 2» и «2 в степени 2» - это одно и то же. Измените числа, и вы увидите разницу.
Оператор **
в Python на самом деле является «силой»; то есть 2 ** 3 = 8
.
Верхний оператор является «степенным» оператором, поэтому в В данном случае это то же самое, что 2 * 2, равно 2 в степени 2. Если вы поставите 3 в среднее положение, вы увидите разницу.
Двойная звездочка означает степень. Одна звездочка означает умножение на. 2 2 совпадает с 2x2, поэтому в обоих ответах получилось 4.