Consistent fine-tuning of synchronized and concurrent data structures
In particular, avoiding synchronized Sets and Maps wherever possible (preferring a ConcurrentHashMap even instead of a synchronized Set) and specifying appropriate ConcurrentHashMap initial capacities (even if we end up choosing 16).
This commit is contained in:
@@ -42,10 +42,9 @@ import org.springframework.util.ClassUtils;
|
||||
* information in the method attributes to discover parameter names. Returns
|
||||
* <code>null</code> if the class file was compiled without debug information.
|
||||
*
|
||||
* <p>Uses ObjectWeb's ASM library for analyzing class files. Each discoverer
|
||||
* instance caches the ASM discovered information for each introspected Class, in a
|
||||
* thread-safe manner. It is recommended to reuse discoverer instances
|
||||
* as far as possible.
|
||||
* <p>Uses ObjectWeb's ASM library for analyzing class files. Each discoverer instance
|
||||
* caches the ASM discovered information for each introspected Class, in a thread-safe
|
||||
* manner. It is recommended to reuse ParameterNameDiscoverer instances as far as possible.
|
||||
*
|
||||
* @author Adrian Colyer
|
||||
* @author Costin Leau
|
||||
@@ -62,7 +61,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
|
||||
|
||||
// the cache uses a nested index (value is a map) to keep the top level cache relatively small in size
|
||||
private final Map<Class<?>, Map<Member, String[]>> parameterNamesCache =
|
||||
new ConcurrentHashMap<Class<?>, Map<Member, String[]>>();
|
||||
new ConcurrentHashMap<Class<?>, Map<Member, String[]>>(32);
|
||||
|
||||
|
||||
public String[] getParameterNames(Method method) {
|
||||
@@ -111,7 +110,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
|
||||
}
|
||||
try {
|
||||
ClassReader classReader = new ClassReader(is);
|
||||
Map<Member, String[]> map = new ConcurrentHashMap<Member, String[]>();
|
||||
Map<Member, String[]> map = new ConcurrentHashMap<Member, String[]>(32);
|
||||
classReader.accept(new ParameterNameDiscoveringVisitor(clazz, map), 0);
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2010 the original author or authors.
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -38,7 +38,7 @@ import org.springframework.util.StringValueResolver;
|
||||
public class SimpleAliasRegistry implements AliasRegistry {
|
||||
|
||||
/** Map from alias to canonical name */
|
||||
private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>();
|
||||
private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>(16);
|
||||
|
||||
|
||||
public void registerAlias(String name, String alias) {
|
||||
|
||||
@@ -74,7 +74,7 @@ public class GenericConversionService implements ConfigurableConversionService {
|
||||
private final Converters converters = new Converters();
|
||||
|
||||
private final Map<ConverterCacheKey, GenericConverter> converterCache =
|
||||
new ConcurrentHashMap<ConverterCacheKey, GenericConverter>();
|
||||
new ConcurrentHashMap<ConverterCacheKey, GenericConverter>(64);
|
||||
|
||||
|
||||
// implementing ConverterRegistry
|
||||
@@ -182,8 +182,8 @@ public class GenericConversionService implements ConfigurableConversionService {
|
||||
* @param targetType the target type
|
||||
* @return the converted value
|
||||
* @throws ConversionException if a conversion exception occurred
|
||||
* @throws IllegalArgumentException if targetType is null
|
||||
* @throws IllegalArgumentException if sourceType is null but source is not null
|
||||
* @throws IllegalArgumentException if targetType is null,
|
||||
* or sourceType is null but source is not null
|
||||
*/
|
||||
public Object convert(Object source, TypeDescriptor targetType) {
|
||||
return convert(source, TypeDescriptor.forObject(source), targetType);
|
||||
@@ -480,7 +480,6 @@ public class GenericConversionService implements ConfigurableConversionService {
|
||||
* @param sourceType the source type
|
||||
* @param targetType the target type
|
||||
* @return a {@link GenericConverter} or <tt>null</tt>
|
||||
* @see #getTypeHierarchy(Class)
|
||||
*/
|
||||
public GenericConverter find(TypeDescriptor sourceType, TypeDescriptor targetType) {
|
||||
// Search the full type hierarchy
|
||||
|
||||
Reference in New Issue
Block a user