Author: soliton
Date: Sun Mar 9 23:08:50 2008
New Revision: 24458
URL: http://svn.gna.org/viewcvs/wesnoth?rev=24458&view=rev
Log:
improved efficiency of network code by avoiding deep copy of every incoming
config object (merge of r24456 from Dave)
Modified:
branches/1.4/src/config.cpp
branches/1.4/src/config.hpp
branches/1.4/src/network_worker.cpp
Modified: branches/1.4/src/config.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/branches/1.4/src/config.cpp?rev=24458&r1=24457&r2=24458&view=diff
==============================================================================
--- branches/1.4/src/config.cpp (original)
+++ branches/1.4/src/config.cpp Sun Mar 9 23:08:50 2008
@@ -782,6 +782,13 @@
return std::string(hash_str);
}
+void config::swap(config& cfg)
+{
+ values.swap(cfg.values);
+ children.swap(cfg.children);
+ ordered_children.swap(cfg.ordered_children);
+}
+
bool operator==(const config& a, const config& b)
{
if (a.values != b.values)
Modified: branches/1.4/src/config.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/branches/1.4/src/config.hpp?rev=24458&r1=24457&r2=24458&view=diff
==============================================================================
--- branches/1.4/src/config.hpp (original)
+++ branches/1.4/src/config.hpp Sun Mar 9 23:08:50 2008
@@ -168,6 +168,9 @@
//! Resets the translated values of all strings contained in this object
void reset_translation() const;
+ //this is a cheap O(1) operation
+ void swap(config& cfg);
+
//! All the attributes of this node.
string_map values;
Modified: branches/1.4/src/network_worker.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/branches/1.4/src/network_worker.cpp?rev=24458&r1=24457&r2=24458&view=diff
==============================================================================
--- branches/1.4/src/network_worker.cpp (original)
+++ branches/1.4/src/network_worker.cpp Sun Mar 9 23:08:50 2008
@@ -625,7 +625,7 @@
delete buf;
throw config::error(error);
} else {
- cfg = (*itor)->config_buf;
+ cfg.swap((*itor)->config_buf);
const TCPsocket res = (*itor)->sock;
buffer* buf = *itor;
received_data_queue.erase(itor);
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits