Библиотека синхронизации производительности Java

Заключение в кавычки Jacob Hallen :

надлежащее использование __slots__ должно оставить свободное место в объектах. Вместо того, чтобы иметь динамический dict, который позволяет добавлять атрибуты к объектам в любое время, существует статическая структура, которая не позволяет дополнения после создания. [Это использование __slots__ устраняет издержки одного dict для каждого объекта.], В то время как это иногда - полезная оптимизация, было бы абсолютно ненужным, если бы интерпретатор Python был достаточно динамичным так, чтобы это только потребовало бы dict, когда на самом деле были дополнения к объекту.

, К сожалению, существует побочный эффект к слотам. Они изменяют поведение объектов, которые имеют слоты способом, которыми могут злоупотребить препоны статического контроля типов и любители командовать. Это плохо, потому что любители командовать должны злоупотреблять метаклассами, и препоны статического контроля типов должны оскорблять декораторов, с тех пор в Python, должен быть только один очевидный способ сделать что-то.

Создание CPython, достаточно умный для обработки оставляющего свободного места без __slots__, является основным обязательством, которое является, вероятно, почему это (еще) не находится в списке изменений для P3k.

21
задан dfa 6 August 2009 в 06:00
поделиться

7 ответов

Я не использовал его, но наткнулся на perf4j недавно.

11
ответ дан 29 November 2019 в 20:28
поделиться

Не прямой ответ на ваш вопрос, но я также часто использую этот совет, чтобы приурочить свой код, и просто написал следующий простой шаблон Eclipse -> Surround With:

long startTime = System.currentTimeMillis();
${line_selection}${cursor}
long totalTime = System.currentTimeMillis() - startTime;
System.out.println("Total time = " + totalTime);
System.out.println();
8
ответ дан 29 November 2019 в 20:28
поделиться

JUnit 4 получил встроенную функцию ограничения времени.

@Test (timeout = X)

должен помочь. X - максимальное количество миллисекунд, в течение которого метод может выполняться.

8
ответ дан 29 November 2019 в 20:28
поделиться

есть StopWatch из commons-lang, он также позволяет разделить таймер.

6
ответ дан 29 November 2019 в 20:28
поделиться

Пробовали JPerf ?

1
ответ дан 29 November 2019 в 20:28
поделиться

Какую помощь вы ищете для решения этой проблемы? У вас есть основы. Вы получаете истекшее время в наносекундах с точностью до любого разрешения, на которое способна базовая ОС / оборудование.

Также ... и я знаю, что вы сказали, что профилировщиков нет ... но у меня был выдающийся опыт работы с YourKit . Он предоставляет API, который можно использовать для управления профилированием извне. В зависимости от вашей конкретной проблемы, возможно, стоит взглянуть на эту.

1
ответ дан 29 November 2019 в 20:28
поделиться

Если вы используете Spring, у вас уже есть хороший класс под названием StopWatch в вашем пути к классам для этого предложения.

3
ответ дан 29 November 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: