Reuse some stringbuilders Index: Util/Scheduler.cs =================================================================== RCS file: /cvs/gnome/beagle/Util/Scheduler.cs,v retrieving revision 1.33 diff -u -B -p -r1.33 Scheduler.cs --- Util/Scheduler.cs 26 Oct 2005 16:21:07 -0000 1.33 +++ Util/Scheduler.cs 30 Oct 2005 23:45:06 -0000 @@ -355,29 +355,28 @@ namespace Beagle.Util { return this.GetHashCode () - other.GetHashCode (); } - public override string ToString () + public void AppendToStringBuilder (StringBuilder sb) { - StringBuilder sb = new StringBuilder (); - - sb.AppendFormat ("{0} {1} ({2})\n", Priority, SubPriority, Timestamp); + sb.Append (Priority).Append (' ').Append (SubPriority); + sb.Append (" (").Append (Timestamp).Append (")\n"); - sb.Append (Tag + "\n"); + sb.Append (Tag).Append ('\n'); double t = (TriggerTime - DateTime.Now).TotalSeconds; if (t > 0) { if (t < 120) sb.AppendFormat ("Hold for {0:0.00} seconds\n", t); - else - sb.AppendFormat ("Hold until {0}\n", TriggerTime); + else { + sb.Append ("Hold until ").Append (TriggerTime); + sb.Append ('\n'); + } } if (Creator != null) - sb.AppendFormat ("Creator: {0}\n", Creator); + sb.Append ("Creator: ").Append (Creator).Append ('\n'); if (Description != null) - sb.Append (Description + "\n"); - - return sb.ToString (); + sb.Append (Description).Append ('\n'); } } @@ -794,6 +793,7 @@ namespace Beagle.Util { ArrayList to_be_executed = new ArrayList (); Hashtable max_priority_by_source = new Hashtable (); int executed_task_count = 0; + StringBuilder status_builder = new StringBuilder (); while (running) { @@ -955,12 +955,13 @@ namespace Beagle.Util { // Now actually execute the set of tasks we found. - StringBuilder status_builder; - status_builder = new StringBuilder (); - status_builder.AppendFormat ("Executing task{0}\n", - to_be_executed.Count > 1 ? "s" : ""); + status_builder.Length = 0; + status_builder.Append ("Executing task"); + if (to_be_executed.Count > 1) + status_builder.Append ('s'); + status_builder.Append ('\n'); foreach (Task task in to_be_executed) { - status_builder.Append (task.ToString ()); + task.AppendToStringBuilder (status_builder); status_builder.Append ('\n'); } status_str = status_builder.ToString (); @@ -1037,15 +1038,18 @@ namespace Beagle.Util { pending_tasks.Reverse (); sb.Append ("Scheduler:\n"); - sb.AppendFormat ("Count: {0}\n", total_executed_task_count); + sb.Append ("Count: ").Append (total_executed_task_count); + sb.Append ('\n'); if (status_str != null) - sb.AppendFormat ("Status: {0}\n", status_str); + sb.Append ("Status: ").Append (status_str).Append ('\n'); int pos = 1; sb.Append ("\nPending Tasks:\n"); foreach (Task task in pending_tasks) { - sb.AppendFormat ("{0} {1}\n", pos, task); + sb.Append (pos).Append (' '); + task.AppendToStringBuilder (sb); + sb.Append ('\n'); ++pos; } if (pos == 1) @@ -1054,14 +1058,18 @@ namespace Beagle.Util { if (future_tasks.Count > 0) { sb.Append ("\nFuture Tasks:\n"); - foreach (Task task in future_tasks) - sb.AppendFormat ("{0}\n", task); + foreach (Task task in future_tasks) { + task.AppendToStringBuilder (sb); + sb.Append ('\n'); + } } if (blocked_tasks.Count > 0) { sb.Append ("\nBlocked Tasks:\n"); - foreach (Task task in blocked_tasks) - sb.AppendFormat ("{0}\n", task); + foreach (Task task in blocked_tasks) { + task.AppendToStringBuilder (sb); + sb.Append ('\n'); + } } } Index: beagled/QueryDriver.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/QueryDriver.cs,v retrieving revision 1.38 diff -u -B -p -r1.38 QueryDriver.cs --- beagled/QueryDriver.cs 12 Sep 2005 19:19:43 -0000 1.38 +++ beagled/QueryDriver.cs 30 Oct 2005 23:45:07 -0000 @@ -402,7 +402,7 @@ namespace Beagle.Daemon { } static void AddSearchTermInfo (QueryPart part, - SearchTermResponse response) + SearchTermResponse response, StringBuilder sb) { if (part.Logic == QueryPartLogic.Prohibited) return; @@ -411,7 +411,7 @@ namespace Beagle.Daemon { ICollection sub_parts; sub_parts = ((QueryPart_Or) part).SubParts; foreach (QueryPart qp in sub_parts) - AddSearchTermInfo (qp, response); + AddSearchTermInfo (qp, response, sb); return; } @@ -430,8 +430,7 @@ namespace Beagle.Daemon { split [i] = null; // Assemble the phrase minus stop words - StringBuilder sb; - sb = new StringBuilder (); + sb.Length = 0; for (int i = 0; i < split.Length; ++i) { if (split [i] == null) continue; @@ -490,10 +489,11 @@ namespace Beagle.Daemon { static private SearchTermResponse AssembleSearchTermResponse (Query query) { + StringBuilder sb = new StringBuilder (); SearchTermResponse search_term_response; search_term_response = new SearchTermResponse (); foreach (QueryPart part in query.Parts) - AddSearchTermInfo (part, search_term_response); + AddSearchTermInfo (part, search_term_response, sb); return search_term_response; } @@ -547,12 +547,12 @@ namespace Beagle.Daemon { static public string GetIndexInformation () { - StringBuilder builder = new StringBuilder ("\n"); + StringBuilder builder = new StringBuilder ('\n'); foreach (Queryable q in queryables) { - builder.AppendFormat ("Name: {0}\n", q.Name); - builder.AppendFormat ("Count: {0}\n", q.GetItemCount ()); - builder.Append ("\n"); + builder.Append ("Name: ").Append (q.Name).Append ('\n'); + builder.Append ("Count: ").Append (q.GetItemCount ()).Append ('\n'); + builder.Append ('\n'); } return builder.ToString ();