* [pbs-devel] [PATCH proxmox] api-macro: replace ident hashmap with simple find
@ 2020-09-17 9:21 Dominik Csapak
2020-09-19 4:38 ` [pbs-devel] applied: " Dietmar Maurer
0 siblings, 1 reply; 2+ messages in thread
From: Dominik Csapak @ 2020-09-17 9:21 UTC (permalink / raw)
To: pbs-devel
after benchmarking (again), i found that doing a simple find instead
of saving the inidices for the ident strings in a hashmap has
no real performance impact (the max list size for the properties
are max ~25 at the moment, so this should not be impacting compile
times much) but it is much simpler
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
proxmox-api-macro/src/api/mod.rs | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/proxmox-api-macro/src/api/mod.rs b/proxmox-api-macro/src/api/mod.rs
index 0071e81..1c2d0f7 100644
--- a/proxmox-api-macro/src/api/mod.rs
+++ b/proxmox-api-macro/src/api/mod.rs
@@ -8,7 +8,6 @@
//! The handling of methods vs type definitions happens in their corresponding submodules.
use std::convert::{TryFrom, TryInto};
-use std::collections::HashMap;
use anyhow::Error;
@@ -379,14 +378,12 @@ impl SchemaItem {
/// Contains a sorted list of properties:
pub struct SchemaObject {
properties_: Vec<(FieldName, bool, Schema)>,
- ident_hash: HashMap<String, usize>,
}
impl SchemaObject {
pub fn new() -> Self {
Self {
properties_: Vec::new(),
- ident_hash: HashMap::new(),
}
}
@@ -397,9 +394,6 @@ impl SchemaObject {
fn sort_properties(&mut self) {
self.properties_.sort_by(|a, b| (a.0).cmp(&b.0));
- for (idx, prop) in self.properties_.iter().enumerate() {
- self.ident_hash.insert(prop.0.as_ident_str().to_string(), idx);
- }
}
fn try_extract_from(obj: &mut JSONObject) -> Result<Self, syn::Error> {
@@ -428,7 +422,6 @@ impl SchemaObject {
Ok(properties)
},
)?,
- ident_hash: HashMap::new(),
};
this.sort_properties();
Ok(this)
@@ -446,17 +439,11 @@ impl SchemaObject {
}
fn find_property_by_ident(&self, key: &str) -> Option<&(FieldName, bool, Schema)> {
- match self.ident_hash.get(key) {
- Some(idx) => Some(&self.properties_[*idx]),
- None => None,
- }
+ self.properties_.iter().find(|p| p.0.as_ident_str() == key)
}
fn find_property_by_ident_mut(&mut self, key: &str) -> Option<&mut (FieldName, bool, Schema)> {
- match self.ident_hash.get(key) {
- Some(idx) => Some(&mut self.properties_[*idx]),
- None => None,
- }
+ self.properties_.iter_mut().find(|p| p.0.as_ident_str() == key)
}
fn extend_properties(&mut self, new_fields: Vec<(FieldName, bool, Schema)>) {
--
2.20.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* [pbs-devel] applied: [PATCH proxmox] api-macro: replace ident hashmap with simple find
2020-09-17 9:21 [pbs-devel] [PATCH proxmox] api-macro: replace ident hashmap with simple find Dominik Csapak
@ 2020-09-19 4:38 ` Dietmar Maurer
0 siblings, 0 replies; 2+ messages in thread
From: Dietmar Maurer @ 2020-09-19 4:38 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Dominik Csapak
applied
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-09-19 4:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-17 9:21 [pbs-devel] [PATCH proxmox] api-macro: replace ident hashmap with simple find Dominik Csapak
2020-09-19 4:38 ` [pbs-devel] applied: " Dietmar Maurer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal