From 765fdc8edf31e21bff7e3a3dc09ef6cc85c2c119 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Mon, 23 Jan 2006 23:08:02 +0000 Subject: [PATCH] Optimization: grow ourselves to the needed capacity prior to fully reading elements off the stream to avoid repeatedly allocating storage arrays and copying or rehashing the elements. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3818 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- src/java/com/threerings/util/StreamableArrayList.java | 3 ++- src/java/com/threerings/util/StreamableHashIntMap.java | 3 ++- src/java/com/threerings/util/StreamableIntIntMap.java | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/java/com/threerings/util/StreamableArrayList.java b/src/java/com/threerings/util/StreamableArrayList.java index dcc53d8cc..56fb5e07e 100644 --- a/src/java/com/threerings/util/StreamableArrayList.java +++ b/src/java/com/threerings/util/StreamableArrayList.java @@ -1,5 +1,5 @@ // -// $Id: StreamableArrayList.java,v 1.2 2004/08/27 02:20:36 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -57,6 +57,7 @@ public class StreamableArrayList extends ArrayList throws IOException, ClassNotFoundException { int ecount = in.readInt(); + ensureCapacity(ecount); for (int ii = 0; ii < ecount; ii++) { add(in.readObject()); } diff --git a/src/java/com/threerings/util/StreamableHashIntMap.java b/src/java/com/threerings/util/StreamableHashIntMap.java index 62d4fcc7a..335e8790a 100644 --- a/src/java/com/threerings/util/StreamableHashIntMap.java +++ b/src/java/com/threerings/util/StreamableHashIntMap.java @@ -1,5 +1,5 @@ // -// $Id: StreamableHashIntMap.java,v 1.4 2004/08/27 02:20:36 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -79,6 +79,7 @@ public class StreamableHashIntMap extends HashIntMap throws IOException, ClassNotFoundException { int ecount = in.readInt(); + ensureCapacity(ecount); for (int ii = 0; ii < ecount; ii++) { int key = in.readInt(); put(key, in.readObject()); diff --git a/src/java/com/threerings/util/StreamableIntIntMap.java b/src/java/com/threerings/util/StreamableIntIntMap.java index cb36f3864..3239254b6 100644 --- a/src/java/com/threerings/util/StreamableIntIntMap.java +++ b/src/java/com/threerings/util/StreamableIntIntMap.java @@ -79,6 +79,7 @@ public class StreamableIntIntMap extends IntIntMap throws IOException, ClassNotFoundException { int ecount = in.readInt(); + ensureCapacity(ecount); for (int ii = 0; ii < ecount; ii++) { int key = in.readInt(); put(key, in.readInt());