Skip to content

Commit 104ceb9

Browse files
authored
Java: Optimize HashSet Initialization (#21205)
* Optimize HashSet Initialization Noticed this while debugging - we can avoid wasting memory/cpu creating 16 buckets when we only need one or a few. * generate samples * use Arrays.asList
1 parent 0389a99 commit 104ceb9

File tree

239 files changed

+488
-1426
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+488
-1426
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pojo.mustache

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -322,16 +322,20 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
322322

323323
static {
324324
// a set of all properties/fields (JSON key names)
325-
openapiFields = new HashSet<String>();
326-
{{#allVars}}
327-
openapiFields.add("{{baseName}}");
328-
{{/allVars}}
325+
{{#hasVars}}
326+
openapiFields = new HashSet<String>(Arrays.asList({{#allVars}}"{{baseName}}"{{^-last}}, {{/-last}}{{/allVars}}));
327+
{{/hasVars}}
328+
{{^hasVars}}
329+
openapiFields = new HashSet<String>(0);
330+
{{/hasVars}}
329331

330332
// a set of required properties/fields (JSON key names)
331-
openapiRequiredFields = new HashSet<String>();
332-
{{#requiredVars}}
333-
openapiRequiredFields.add("{{baseName}}");
334-
{{/requiredVars}}
333+
{{#hasRequired}}
334+
openapiRequiredFields = new HashSet<String>(Arrays.asList({{#requiredVars}}"{{baseName}}"{{^-last}}, {{/-last}}{{/requiredVars}}));
335+
{{/hasRequired}}
336+
{{^hasRequired}}
337+
openapiRequiredFields = new HashSet<String>(0);
338+
{{/hasRequired}}
335339
}
336340

337341
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Category.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ private String toIndentedString(Object o) {
7171

7272
static {
7373
// a set of all properties/fields (JSON key names)
74-
openapiFields = new HashSet<String>();
74+
openapiFields = new HashSet<String>(0);
7575

7676
// a set of required properties/fields (JSON key names)
77-
openapiRequiredFields = new HashSet<String>();
77+
openapiRequiredFields = new HashSet<String>(0);
7878
}
7979

8080
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/ModelApiResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ private String toIndentedString(Object o) {
7171

7272
static {
7373
// a set of all properties/fields (JSON key names)
74-
openapiFields = new HashSet<String>();
74+
openapiFields = new HashSet<String>(0);
7575

7676
// a set of required properties/fields (JSON key names)
77-
openapiRequiredFields = new HashSet<String>();
77+
openapiRequiredFields = new HashSet<String>(0);
7878
}
7979

8080
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Order.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ private String toIndentedString(Object o) {
7171

7272
static {
7373
// a set of all properties/fields (JSON key names)
74-
openapiFields = new HashSet<String>();
74+
openapiFields = new HashSet<String>(0);
7575

7676
// a set of required properties/fields (JSON key names)
77-
openapiRequiredFields = new HashSet<String>();
77+
openapiRequiredFields = new HashSet<String>(0);
7878
}
7979

8080
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Pet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ private String toIndentedString(Object o) {
7171

7272
static {
7373
// a set of all properties/fields (JSON key names)
74-
openapiFields = new HashSet<String>();
74+
openapiFields = new HashSet<String>(0);
7575

7676
// a set of required properties/fields (JSON key names)
77-
openapiRequiredFields = new HashSet<String>();
77+
openapiRequiredFields = new HashSet<String>(0);
7878
}
7979

8080
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Tag.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ private String toIndentedString(Object o) {
7171

7272
static {
7373
// a set of all properties/fields (JSON key names)
74-
openapiFields = new HashSet<String>();
74+
openapiFields = new HashSet<String>(0);
7575

7676
// a set of required properties/fields (JSON key names)
77-
openapiRequiredFields = new HashSet<String>();
77+
openapiRequiredFields = new HashSet<String>(0);
7878
}
7979

8080
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/User.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ private String toIndentedString(Object o) {
7171

7272
static {
7373
// a set of all properties/fields (JSON key names)
74-
openapiFields = new HashSet<String>();
74+
openapiFields = new HashSet<String>(0);
7575

7676
// a set of required properties/fields (JSON key names)
77-
openapiRequiredFields = new HashSet<String>();
77+
openapiRequiredFields = new HashSet<String>(0);
7878
}
7979

8080
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Category.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,10 @@ private String toIndentedString(Object o) {
147147

148148
static {
149149
// a set of all properties/fields (JSON key names)
150-
openapiFields = new HashSet<String>();
151-
openapiFields.add("id");
152-
openapiFields.add("name");
150+
openapiFields = new HashSet<String>(Arrays.asList("id", "name"));
153151

154152
// a set of required properties/fields (JSON key names)
155-
openapiRequiredFields = new HashSet<String>();
153+
openapiRequiredFields = new HashSet<String>(0);
156154
}
157155

158156
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/ModelApiResponse.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,10 @@ private String toIndentedString(Object o) {
173173

174174
static {
175175
// a set of all properties/fields (JSON key names)
176-
openapiFields = new HashSet<String>();
177-
openapiFields.add("code");
178-
openapiFields.add("type");
179-
openapiFields.add("message");
176+
openapiFields = new HashSet<String>(Arrays.asList("code", "type", "message"));
180177

181178
// a set of required properties/fields (JSON key names)
182-
openapiRequiredFields = new HashSet<String>();
179+
openapiRequiredFields = new HashSet<String>(0);
183180
}
184181

185182
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Order.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -306,16 +306,10 @@ private String toIndentedString(Object o) {
306306

307307
static {
308308
// a set of all properties/fields (JSON key names)
309-
openapiFields = new HashSet<String>();
310-
openapiFields.add("id");
311-
openapiFields.add("petId");
312-
openapiFields.add("quantity");
313-
openapiFields.add("shipDate");
314-
openapiFields.add("status");
315-
openapiFields.add("complete");
309+
openapiFields = new HashSet<String>(Arrays.asList("id", "petId", "quantity", "shipDate", "status", "complete"));
316310

317311
// a set of required properties/fields (JSON key names)
318-
openapiRequiredFields = new HashSet<String>();
312+
openapiRequiredFields = new HashSet<String>(0);
319313
}
320314

321315
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Pet.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -330,18 +330,10 @@ private String toIndentedString(Object o) {
330330

331331
static {
332332
// a set of all properties/fields (JSON key names)
333-
openapiFields = new HashSet<String>();
334-
openapiFields.add("id");
335-
openapiFields.add("category");
336-
openapiFields.add("name");
337-
openapiFields.add("photoUrls");
338-
openapiFields.add("tags");
339-
openapiFields.add("status");
333+
openapiFields = new HashSet<String>(Arrays.asList("id", "category", "name", "photoUrls", "tags", "status"));
340334

341335
// a set of required properties/fields (JSON key names)
342-
openapiRequiredFields = new HashSet<String>();
343-
openapiRequiredFields.add("name");
344-
openapiRequiredFields.add("photoUrls");
336+
openapiRequiredFields = new HashSet<String>(Arrays.asList("name", "photoUrls"));
345337
}
346338

347339
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Tag.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,10 @@ private String toIndentedString(Object o) {
147147

148148
static {
149149
// a set of all properties/fields (JSON key names)
150-
openapiFields = new HashSet<String>();
151-
openapiFields.add("id");
152-
openapiFields.add("name");
150+
openapiFields = new HashSet<String>(Arrays.asList("id", "name"));
153151

154152
// a set of required properties/fields (JSON key names)
155-
openapiRequiredFields = new HashSet<String>();
153+
openapiRequiredFields = new HashSet<String>(0);
156154
}
157155

158156
/**

samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/User.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -303,18 +303,10 @@ private String toIndentedString(Object o) {
303303

304304
static {
305305
// a set of all properties/fields (JSON key names)
306-
openapiFields = new HashSet<String>();
307-
openapiFields.add("id");
308-
openapiFields.add("username");
309-
openapiFields.add("firstName");
310-
openapiFields.add("lastName");
311-
openapiFields.add("email");
312-
openapiFields.add("password");
313-
openapiFields.add("phone");
314-
openapiFields.add("userStatus");
306+
openapiFields = new HashSet<String>(Arrays.asList("id", "username", "firstName", "lastName", "email", "password", "phone", "userStatus"));
315307

316308
// a set of required properties/fields (JSON key names)
317-
openapiRequiredFields = new HashSet<String>();
309+
openapiRequiredFields = new HashSet<String>(0);
318310
}
319311

320312
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/Bird.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,10 @@ private String toIndentedString(Object o) {
147147

148148
static {
149149
// a set of all properties/fields (JSON key names)
150-
openapiFields = new HashSet<String>();
151-
openapiFields.add("size");
152-
openapiFields.add("color");
150+
openapiFields = new HashSet<String>(Arrays.asList("size", "color"));
153151

154152
// a set of required properties/fields (JSON key names)
155-
openapiRequiredFields = new HashSet<String>();
153+
openapiRequiredFields = new HashSet<String>(0);
156154
}
157155

158156
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/Category.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,10 @@ private String toIndentedString(Object o) {
147147

148148
static {
149149
// a set of all properties/fields (JSON key names)
150-
openapiFields = new HashSet<String>();
151-
openapiFields.add("id");
152-
openapiFields.add("name");
150+
openapiFields = new HashSet<String>(Arrays.asList("id", "name"));
153151

154152
// a set of required properties/fields (JSON key names)
155-
openapiRequiredFields = new HashSet<String>();
153+
openapiRequiredFields = new HashSet<String>(0);
156154
}
157155

158156
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/DataQuery.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,10 @@ private String toIndentedString(Object o) {
179179

180180
static {
181181
// a set of all properties/fields (JSON key names)
182-
openapiFields = new HashSet<String>();
183-
openapiFields.add("id");
184-
openapiFields.add("outcomes");
185-
openapiFields.add("suffix");
186-
openapiFields.add("text");
187-
openapiFields.add("date");
182+
openapiFields = new HashSet<String>(Arrays.asList("id", "outcomes", "suffix", "text", "date"));
188183

189184
// a set of required properties/fields (JSON key names)
190-
openapiRequiredFields = new HashSet<String>();
185+
openapiRequiredFields = new HashSet<String>(0);
191186
}
192187

193188
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/DefaultValue.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -428,18 +428,10 @@ private String toIndentedString(Object o) {
428428

429429
static {
430430
// a set of all properties/fields (JSON key names)
431-
openapiFields = new HashSet<String>();
432-
openapiFields.add("array_string_enum_ref_default");
433-
openapiFields.add("array_string_enum_default");
434-
openapiFields.add("array_string_default");
435-
openapiFields.add("array_integer_default");
436-
openapiFields.add("array_string");
437-
openapiFields.add("array_string_nullable");
438-
openapiFields.add("array_string_extension_nullable");
439-
openapiFields.add("string_nullable");
431+
openapiFields = new HashSet<String>(Arrays.asList("array_string_enum_ref_default", "array_string_enum_default", "array_string_default", "array_integer_default", "array_string", "array_string_nullable", "array_string_extension_nullable", "string_nullable"));
440432

441433
// a set of required properties/fields (JSON key names)
442-
openapiRequiredFields = new HashSet<String>();
434+
openapiRequiredFields = new HashSet<String>(0);
443435
}
444436

445437
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,10 @@ private String toIndentedString(Object o) {
176176

177177
static {
178178
// a set of all properties/fields (JSON key names)
179-
openapiFields = new HashSet<String>();
180-
openapiFields.add("number");
181-
openapiFields.add("float");
182-
openapiFields.add("double");
179+
openapiFields = new HashSet<String>(Arrays.asList("number", "float", "double"));
183180

184181
// a set of required properties/fields (JSON key names)
185-
openapiRequiredFields = new HashSet<String>();
182+
openapiRequiredFields = new HashSet<String>(0);
186183
}
187184

188185
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/Pet.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -325,18 +325,10 @@ private String toIndentedString(Object o) {
325325

326326
static {
327327
// a set of all properties/fields (JSON key names)
328-
openapiFields = new HashSet<String>();
329-
openapiFields.add("id");
330-
openapiFields.add("name");
331-
openapiFields.add("category");
332-
openapiFields.add("photoUrls");
333-
openapiFields.add("tags");
334-
openapiFields.add("status");
328+
openapiFields = new HashSet<String>(Arrays.asList("id", "name", "category", "photoUrls", "tags", "status"));
335329

336330
// a set of required properties/fields (JSON key names)
337-
openapiRequiredFields = new HashSet<String>();
338-
openapiRequiredFields.add("name");
339-
openapiRequiredFields.add("photoUrls");
331+
openapiRequiredFields = new HashSet<String>(Arrays.asList("name", "photoUrls"));
340332
}
341333

342334
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/Query.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,10 @@ private String toIndentedString(Object o) {
211211

212212
static {
213213
// a set of all properties/fields (JSON key names)
214-
openapiFields = new HashSet<String>();
215-
openapiFields.add("id");
216-
openapiFields.add("outcomes");
214+
openapiFields = new HashSet<String>(Arrays.asList("id", "outcomes"));
217215

218216
// a set of required properties/fields (JSON key names)
219-
openapiRequiredFields = new HashSet<String>();
217+
openapiRequiredFields = new HashSet<String>(0);
220218
}
221219

222220
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/Tag.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,10 @@ private String toIndentedString(Object o) {
147147

148148
static {
149149
// a set of all properties/fields (JSON key names)
150-
openapiFields = new HashSet<String>();
151-
openapiFields.add("id");
152-
openapiFields.add("name");
150+
openapiFields = new HashSet<String>(Arrays.asList("id", "name"));
153151

154152
// a set of required properties/fields (JSON key names)
155-
openapiRequiredFields = new HashSet<String>();
153+
openapiRequiredFields = new HashSet<String>(0);
156154
}
157155

158156
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,10 @@ private String toIndentedString(Object o) {
121121

122122
static {
123123
// a set of all properties/fields (JSON key names)
124-
openapiFields = new HashSet<String>();
125-
openapiFields.add("name");
124+
openapiFields = new HashSet<String>(Arrays.asList("name"));
126125

127126
// a set of required properties/fields (JSON key names)
128-
openapiRequiredFields = new HashSet<String>();
127+
openapiRequiredFields = new HashSet<String>(0);
129128
}
130129

131130
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,10 @@ private String toIndentedString(Object o) {
199199

200200
static {
201201
// a set of all properties/fields (JSON key names)
202-
openapiFields = new HashSet<String>();
203-
openapiFields.add("size");
204-
openapiFields.add("color");
205-
openapiFields.add("id");
206-
openapiFields.add("name");
202+
openapiFields = new HashSet<String>(Arrays.asList("size", "color", "id", "name"));
207203

208204
// a set of required properties/fields (JSON key names)
209-
openapiRequiredFields = new HashSet<String>();
205+
openapiRequiredFields = new HashSet<String>(0);
210206
}
211207

212208
/**

samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,10 @@ private String toIndentedString(Object o) {
131131

132132
static {
133133
// a set of all properties/fields (JSON key names)
134-
openapiFields = new HashSet<String>();
135-
openapiFields.add("values");
134+
openapiFields = new HashSet<String>(Arrays.asList("values"));
136135

137136
// a set of required properties/fields (JSON key names)
138-
openapiRequiredFields = new HashSet<String>();
137+
openapiRequiredFields = new HashSet<String>(0);
139138
}
140139

141140
/**

0 commit comments

Comments
 (0)