için hesap veremediğim süreyi gerektiriyor. JProfiler'i kullanarak, Java kodumda anlam ifade edemediğim bir sıcak nokta tespit ettim. JProfiler, bu yöntemin, ayıklama yöntemlerini çağırmak için gereken süreyi içermeyen, ortalama olarak ortalama 150 μ s (674 μ s ısınma olmadan) aldığını açıklar. 150 μ s pek görünmeyebilir, ama bu uygulamada (ve benim kullanıcılar tarafından deneyimlidir) ve bu bana göre daha karmaşık görünüyor diğer yöntemlere göre çok daha fazla gibi görünüyor. Bu yüzden benim için önemli.Java yöntemi,
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;
}
Bu yöntemi farklı yönlerde en aza indirdim, ancak bana hiçbir zaman yararlı olmadığını öğretir. JProfiler tarafından bildirilen sürenin (150 μ s) yalnızca bu yöntemdeki kodla ilgili olduğunu ve getAuthorization
, isDenied
, resetField
ve benzeri işlemleri yürütmek için gereken süreyi içermediğini vurgulayamıyorum. Bu yüzden, bu kod parçacığını çok bağlamsız yayınlamakla başladım, çünkü sorun, bu kodla birlikte göründüğü ve sonraki müteakip yöntem çağrıları değil.
Belki neden hayalet görüyorum hissediyorsun – iddia edebilirsiniz :) Her neyse, zaman ayırdığınız için teşekkürler!
Profil, bir ısınma süresi gerektirir (JIT için). Isınıyor musun? JIT devre dışı mı? – Java42
Bu iyi bir nokta. Bunu bilmeme rağmen, topu oraya bırakmış olabilirim. Gönderiyi güncelleyeceğim ve bazı ısınma turlarından sonra aldığım sürenin miktarı ile birlikte, hala aşırı olduğu fikrine alıp alamayacağımı ikiye ayırıyorum ... belki de soruyu silmem gerekir ... belki değil :) –
JProfiler ile CPU örnekleme veya dinamik enstrüman kullanıyor musunuz? –