JProfiler を使用して、理解できない Java コードのホット スポットを特定しました。JProfiler は、このメソッドに平均で 150μs (ウォームアップなしで 674μs) かかると説明しています。これには、子孫メソッドの呼び出しにかかる時間が含まれます。150μs はそれほど多くないように見えるかもしれませんが、このアプリケーションでは合計され (そして私のユーザーが経験しています)、これよりも複雑に見える他の方法と比較して、多くのように見えます。したがって、それは私にとって重要です。
private boolean assertReadAuthorizationForFields(Object entity, Object[] state,
String[] propertyNames) {
boolean changed = false;
final List<Field> fields = FieldUtil.getAppropriatePropertyFields(entity, propertyNames);
// average of 14 fields to iterate over
for (final Field field : fields) {
// manager.getAuthorization returns an enum type
// manager is a field referencing another component
if (manager.getAuthorization(READ, field).isDenied()) {
FieldUtil.resetField(field.getName(), state, propertyNames);
changed = true;
}
}
return changed;
}
私自身、この方法をさまざまな方向に最小限に抑えましたが、あまり役に立ちません。JProfiler が報告する所要時間 (150μs) は、単にこのメソッドのコードに関するものであり、実行にかかる時間は含まれていないことを強調することはできませgetAuthorization
ん。問題はこのコードにあり、その後の子孫メソッドの呼び出しではないように思われるため、文脈をあまり考慮せずにこのスニペットを投稿することから始めるのもそのためです。isDenied
resetField
たぶん、あなたは理由を議論することができます - もしあなたが私が幽霊を見ていると感じたら:) とにかく、あなたの時間をありがとう!