Java :эффективность writeObject по сравнению с writeExternal

Говорят, что механизм сериализации по умолчанию в Java не очень эффективен, потому что а )он определяет, какие поля записывать/читать посредством отражения, которое обычно выполняется медленно b )он записывает дополнительные данные транслировать.

Один из способов сделать его более эффективным — реализовать Externalizable и его методы writeExternal/readExternal.

Вот вопрос :Если я вместо этого предоставлю методы 'writeObject/readObject' и не вызову в них deafiltWriteObject/defaultReadObject, то этот механизм не будет использовать отражение, чтобы выяснить, какие поля нужно писать/читать, плюс это не будет записывать лишние данные в поток (или будет? не уверен ). Итак, с точки зрения эффективности, реализация writeObject/readObject, упомянутая выше, аналогична реализации Externalizable? Или последний вариант дает больше практических преимуществ, которых нет у первого?

РЕДАКТИРОВАТЬ :разница, конечно, заключается в том, что класс Serializable, реализующий readObject/writeObject, является подклассом, и если у подкласса есть свой собственный readObject/writeObject, им не нужно вызывать super readObject/writeObject. Не так, если супер/подкласс вместо этого реализует Externalizable. В этом случае необходимо явно вызывать функции writeExternal/readExternal super. Однако это различие не имеет значения с точки зрения эффективности.

18
задан shrini1000 4 May 2012 в 08:14
поделиться