[ovs-dev] [netlink flows v2 01/12] ofproto: Use shash instead of svec for uniquifying, in reinit_ports().
Ben Pfaff
blp at nicira.com
Tue Dec 28 22:32:56 UTC 2010
No point in using an O(n log n) algorithm when an O(n) algorithm is
readily available.
(I'm sure that the actual performance difference, if any, does not matter
in practice.)
---
ofproto/ofproto.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index e4bc199..e4057c2 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -1481,7 +1481,8 @@ ofproto_flush_flows(struct ofproto *ofproto)
static void
reinit_ports(struct ofproto *p)
{
- struct svec devnames;
+ struct shash_node *node;
+ struct shash devnames;
struct ofport *ofport;
struct odp_port *odp_ports;
size_t n_odp_ports;
@@ -1489,21 +1490,20 @@ reinit_ports(struct ofproto *p)
COVERAGE_INC(ofproto_reinit_ports);
- svec_init(&devnames);
+ shash_init(&devnames);
HMAP_FOR_EACH (ofport, hmap_node, &p->ports) {
- svec_add (&devnames, ofport->opp.name);
+ shash_add_once (&devnames, ofport->opp.name, NULL);
}
dpif_port_list(p->dpif, &odp_ports, &n_odp_ports);
for (i = 0; i < n_odp_ports; i++) {
- svec_add (&devnames, odp_ports[i].devname);
+ shash_add_once (&devnames, odp_ports[i].devname, NULL);
}
free(odp_ports);
- svec_sort_unique(&devnames);
- for (i = 0; i < devnames.n; i++) {
- update_port(p, devnames.names[i]);
+ SHASH_FOR_EACH (node, &devnames) {
+ update_port(p, node->name);
}
- svec_destroy(&devnames);
+ shash_destroy(&devnames);
}
static struct ofport *
--
1.7.1
More information about the dev
mailing list