Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/ikdasm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2017-08-03 03:36:57 +0300
committerZoltan Varga <vargaz@gmail.com>2017-08-03 03:36:57 +0300
commit3aef9cdd6013fc0620a1817f0b11d8fb90ed2e0f (patch)
treeee0392dad811ae7678c394bcb7596dc61eb08730
parent1d7d43603791e0236b56d076578657bee44fef6b (diff)
Reduce allocations in LineWriter.cs.
-rw-r--r--LineWriter.cs41
1 files changed, 35 insertions, 6 deletions
diff --git a/LineWriter.cs b/LineWriter.cs
index 4acf925..198f985 100644
--- a/LineWriter.cs
+++ b/LineWriter.cs
@@ -34,10 +34,12 @@ namespace Ildasm
readonly TextWriter writer;
int column;
bool wrapped;
+ StringBuilder sb;
internal LineWriter(TextWriter writer)
{
this.writer = writer;
+ sb = new StringBuilder (256);
}
internal int Column
@@ -55,41 +57,68 @@ namespace Ildasm
wrapped = false;
}
+ internal void Write(string str, object arg0)
+ {
+ int len = sb.Length;
+ sb.AppendFormat (str, arg0);
+ column += sb.Length - len;
+ }
+
internal void Write(string str, params object[] args)
{
- Write(String.Format(str, args));
+ int len = sb.Length;
+ sb.AppendFormat (str, args);
+ column += sb.Length - len;
}
internal void Write(string str)
{
- writer.Write(str);
+ sb.Append (str);
column += str.Length;
}
internal void WriteLine(string str)
{
- writer.WriteLine(str);
+ if (sb.Length > 0) {
+ sb.Append (str);
+ writer.WriteLine (sb.ToString ());
+ sb.Clear ();
+ } else {
+ writer.WriteLine (str);
+ }
column = 0;
wrapped = true;
}
internal void WriteLine(string str, params object[] args)
{
- writer.WriteLine(str, args);
+ if (sb.Length > 0) {
+ sb.AppendFormat (str, args);
+ writer.WriteLine(sb.ToString ());
+ sb.Clear ();
+ } else {
+ writer.WriteLine (String.Format (str, args));
+ }
column = 0;
wrapped = true;
}
internal void WriteLine()
{
- writer.WriteLine();
+ if (sb.Length > 0) {
+ writer.WriteLine (sb.ToString ());
+ sb.Clear ();
+ } else {
+ writer.WriteLine ();
+ }
column = 0;
wrapped = true;
}
internal void GoToColumn(int column)
{
- Write(new String(' ', column - this.column));
+ sb.Append (' ', column - this.column);
+ this.column = column;
}
internal void Flush()