[gxml] Added performance/tw-serialize
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Added performance/tw-serialize
- Date: Thu, 7 May 2015 12:02:42 +0000 (UTC)
commit c636ef5d92eb1504fc8f16b7b0bbd61a2a208eeb
Author: Daniel Espinosa <esodan gmail com>
Date: Tue May 5 18:03:11 2015 -0500
Added performance/tw-serialize
* Fixes on containers removing xElement
* Fixed a bug on Document.save_as()
* There exists a bug on serialization to TwDocument,
missing properties on saving to file
gxml/Document.vala | 9 +++------
gxml/SerializableGeeArrayList.vala | 4 ++--
gxml/SerializableGeeDualKeyMap.vala | 4 ++--
gxml/SerializableGeeHashMap.vala | 4 ++--
gxml/SerializableGeeTreeMap.vala | 4 ++--
test/TwDocumentTest.vala | 2 +-
test/gxml-performance.vala | 30 ++++++++++++++++++++++++++++++
7 files changed, 42 insertions(+), 15 deletions(-)
---
diff --git a/gxml/Document.vala b/gxml/Document.vala
index a18090c..33e2414 100644
--- a/gxml/Document.vala
+++ b/gxml/Document.vala
@@ -119,12 +119,9 @@ public interface GXml.Document : Object, GXml.Node
*/
public virtual bool save_as (GLib.File f, GLib.Cancellable? cancellable = null) throws GLib.Error
{
- if (f.query_exists ()) {
- f = file;
- save (cancellable);
- return true;
- }
- return false;
+ file = f;
+ save (cancellable);
+ return true;
}
/**
* Creates a new { link GXml.Document} using default implementation class.
diff --git a/gxml/SerializableGeeArrayList.vala b/gxml/SerializableGeeArrayList.vala
index 9725dd7..0ae57d0 100644
--- a/gxml/SerializableGeeArrayList.vala
+++ b/gxml/SerializableGeeArrayList.vala
@@ -83,13 +83,13 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
public virtual GXml.Node? serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
return default_serialize (node);
}
public GXml.Node? default_serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
if (element_type.is_a (typeof (Serializable))) {
for (int i =0; i < size; i++) {
diff --git a/gxml/SerializableGeeDualKeyMap.vala b/gxml/SerializableGeeDualKeyMap.vala
index 5c51ef5..68ec52c 100644
--- a/gxml/SerializableGeeDualKeyMap.vala
+++ b/gxml/SerializableGeeDualKeyMap.vala
@@ -164,13 +164,13 @@ public class GXml.SerializableDualKeyMap<P,S,V> : Object, Serializable, Serializ
public virtual GXml.Node? serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
return default_serialize (node);
}
public GXml.Node? default_serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
foreach (V v in values ()) {
if (v is Serializable)
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index b0fe3b2..5176a57 100644
--- a/gxml/SerializableGeeHashMap.vala
+++ b/gxml/SerializableGeeHashMap.vala
@@ -80,13 +80,13 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, Ser
public virtual GXml.Node? serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
return default_serialize (node);
}
public GXml.Node? default_serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
if (value_type.is_a (typeof (Serializable))) {
foreach (V v in values) {
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 354dfae..72d4323 100644
--- a/gxml/SerializableGeeTreeMap.vala
+++ b/gxml/SerializableGeeTreeMap.vala
@@ -83,13 +83,13 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, Ser
public virtual GXml.Node? serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
return default_serialize (node);
}
public GXml.Node? default_serialize (GXml.Node node)
throws GLib.Error
- requires (node is xElement)
+ requires (node is GXml.Element)
{
if (value_type.is_a (typeof (Serializable))) {
foreach (V v in values) {
diff --git a/test/TwDocumentTest.vala b/test/TwDocumentTest.vala
index 43e7bd8..64d127b 100644
--- a/test/TwDocumentTest.vala
+++ b/test/TwDocumentTest.vala
@@ -259,7 +259,7 @@ class TwDocumentTest : GXmlTest {
var r = (GXml.Element) d.root;
r.set_attr ("name","The Great Book");
#if DEBUG
- GLib.message (@"Creating chidls...");
+ GLib.message (@"Creating childs...");
#endif
for (int i = 0; i < 30000; i++){
var b = (GXml.Element) d.create_element ("book");
diff --git a/test/gxml-performance.vala b/test/gxml-performance.vala
index cb884ce..69f5db0 100644
--- a/test/gxml-performance.vala
+++ b/test/gxml-performance.vala
@@ -141,6 +141,36 @@ public class Performance
#endif
assert_not_reached ();
}
+ });Test.add_func ("/gxml/performance/tw-serialize",
+ () => {
+ try {
+ double time;
+ Test.timer_start ();
+ var d = new xDocument.from_path (GXmlTest.get_test_dir () + "/test-large.xml");
+ time = Test.timer_elapsed ();
+ Test.minimized_result (time, "open document from path: %g seconds", time);
+ Test.timer_start ();
+ var bs = new BookStore ();
+ bs.deserialize (d);
+ time = Test.timer_elapsed ();
+ Test.minimized_result (time, "standard deserialize/performance: %g seconds", time);
+ Test.timer_start ();
+ var d2 = new TwDocument (GXmlTest.get_test_dir () + "/test-large.xml");
+ bs.serialize (d2);
+ time = Test.timer_elapsed ();
+ Test.minimized_result (time, "TwDocument serialize/performance: %g seconds", time);
+ Test.timer_start ();
+ var nf = GLib.File.new_for_path (GXmlTest.get_test_dir () + "/test-large-tw.xml");
+ d2.indent = true;
+ d2.save_as (nf);
+ time = Test.timer_elapsed ();
+ Test.minimized_result (time, "TwDocument Write to disk serialize/performance: %g seconds", time);
+ } catch (GLib.Error e) {
+#if DEBUG
+ GLib.message ("ERROR: "+e.message);
+#endif
+ assert_not_reached ();
+ }
});
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]