Comments (1)
This suggestion sounds reasonable, but is this rather a theoretical issue, or something you identified as performance issue when using Gson?
I assume this change would mainly help when writing large strings at the beginning of the JSON data. In the other cases it would not change much:
- When writing small strings at the beginning using
ensureCapacity
might have similar effects as the implicit resizing byappend
- Writing large strings later in the JSON data might not trigger any resizing for
ensureCapacity
since the buffer is already large enough - The perfectly sized buffer shown in your "Reproduction steps" would probably only matter for top-level string values (and which don't require escaping); for non-top-level string values subsequent values or closing
]
or}
would still cause resizing
But I am not completely sure. It seems the main advantages with your proposed changes would be:
- less buffer resizing for large strings at the beginning of the JSON data
- potentially perfectly sized buffers for top-level string values
Would probably also make sense to check not only for StringWriter
but also for com.google.gson.internal.Streams.AppendableWriter
then, in case the user provided directly a StringBuilder
or StringBuffer
to Gson.toJson(Object, Appendable)
.
from gson.
Related Issues (20)
- The module declaration in version 2.11.0 is not visible HOT 11
- TypeAdapterFactory INTEGER_FACTORY will change INTEGER type to LONG type HOT 2
- errorprone cannot be considered optional HOT 4
- Can't read multiline string in JSON5 HOT 3
- Performance regressions from 2.10.1 to 2.11.0 on R8 minification task HOT 2
- Implement fallback if class `java.security.AccessController` does not exist HOT 5
- JDK21 toJson failure HOT 6
- Make com.google.gson.JsonElement Serializeable HOT 1
- Custom Gson, singleton mode, deserialization in multiple coroutines, resulting in crash HOT 2
- error HOT 4
- Read `json_name` from protobuf field annotations for serialization and deserialization
- TypeToken.getParameterized(Response.class, List.class, Long.class) get IllegalArgumentException: requires 1 type arguments, but got 2 HOT 3
- Just a Question for nested JSON HOT 2
- Yes can confirm this; it looks like this was indeed introduced by 3e3266cf48f132928225e1561a6ae4cb5503d08f (by accident): HOT 1
- java.lang.StackOverflowError: stack size 8MB HOT 1
- Gson behaviour is different in Unit test and in actual build HOT 2
- java.util.ConcurrentModificationException HOT 3
- Remove `examples/android-proguard-example`
- Failure to simultaneously resolve two consumers using each of v2.10.1 and v2.11.0 together in Eclipse IDE HOT 5
- Gson is incorrectly deserializing default fields in Kotlin HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gson.