Так как System.arraycopy() и clone() делают только мелкое копирование, интересно, будет ли этот подход работать для глубокой копии.Правильно ли это сделать глубокую копию в Java для бенчмаркинга?
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
long x=System.nanoTime();
oos.writeObject(fromArray);
oos.flush();
ByteArrayInputStream bin = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bin);
Object o=ois.readObject();
double timeTaken= (System.nanoTime()-x)/1000000000.0;
1) Будет ли переменная, timeTaken, дать мне фактическое время для глубокой копии?
2) Если я передаю данные говорят массив размером 1 Мб, как
byte[] fromArray = new byte[1024*1024];
и рассчитать пропускную способность в Мбит/сек, как,
double throughput=1/timeTaken;
Будет ли разумно рассматривать это как память производительность бенчмаркинга?
Интересное занятие при глубоком копировании. Разумеется, этот метод будет подвержен всем ограничениям сериализации. Вы взглянули на такие рамки, как [Dozer] (http://dozer.sourceforge.net/)? – Perception
Что именно вы пытаетесь сравнить? Как быстро JVM может пересекать граф объектов или как быстро он может считывать из непрерывного блока памяти? Эти два * могут отличаться друг от друга. – SimonC
Я пытаюсь сравнить, как быстро я могу читать и записывать кусок данных (1B, 1Kb и 1Mb) в память. – Prasanna