Я использую как Gson, так и Guava. У меня есть класс, который я хочу сериализации, который выглядит как что-то вроде этого sscceMultimap и gson performance
import com.google.common.collect.Multimap;
public class FooManager {
private Multimap<String, Foo> managedFoos;
// other stuff
}
Gson не знает, как сериализовать это. Так что я сделал это:
public final class FoomapSerializer implements
JsonSerializer<Multimap<String, Foo>> {
@SuppressWarnings("serial")
private static final Type t =
new TypeToken<Map<String, Collection<Foo>>>() {}.getType();
@Override
public JsonElement serialize(Multimap<String, Foo> arg0, Type arg1,
JsonSerializationContext arg2) {
return arg2.serialize(arg0.asMap(), t);
}
}
Однако, боюсь, вызывая .asMap()
снова и снова будет медленным, даже если основной Map
редко меняется. (Сериализация объектов Foo
будет меняться часто, но само отображение не будет после инициализации). Есть ли способ лучше?
Вы говорите, что боитесь этого; но вы приурочили его к альтернативным подходам, например, используя [суппорт] (https://code.google.com/p/caliper/)? Кроме того, вы пробовали Джексона? – fge
Я не приурочил его к альтернативным подходам, но я сделал это время против себя; Другими словами, я сравнивал вызов 'asMap' несколько раз на одной карте с' asMap' на разных дублированных картах с теми же данными, и одна и та же карта была не намного быстрее. Мой тест суппорта, возможно, был плохим, хотя. – durron597
Кроме того, все, что я читал, говорит о том, что Джексон был быстрее 2-3 года назад, но теперь он быстрее. – durron597