summaryrefslogtreecommitdiff
path: root/Source/ModelViewer/Namer.cs
diff options
context:
space:
mode:
authorGravatar Michal Moskal <michal@moskal.me>2011-10-19 15:36:14 -0700
committerGravatar Michal Moskal <michal@moskal.me>2011-10-19 15:36:14 -0700
commit39b0ec5cf8900757bb19c13cb692b2414de91475 (patch)
tree29202b260b0776fbacb13c1fd9ced136357269b8 /Source/ModelViewer/Namer.cs
parent512562d0c48d7d71b5579476c3e07ba5c3c41817 (diff)
Performance improvements in BVD
Diffstat (limited to 'Source/ModelViewer/Namer.cs')
-rw-r--r--Source/ModelViewer/Namer.cs27
1 files changed, 18 insertions, 9 deletions
diff --git a/Source/ModelViewer/Namer.cs b/Source/ModelViewer/Namer.cs
index 922859f2..fce9522d 100644
--- a/Source/ModelViewer/Namer.cs
+++ b/Source/ModelViewer/Namer.cs
@@ -204,12 +204,15 @@ namespace Microsoft.Boogie.ModelViewer
static ulong GetNumber(string s, int beg)
{
- var end = beg;
- while (end < s.Length && char.IsDigit(s[end]))
- end++;
- ulong res;
- if (!ulong.TryParse(s.Substring(beg, end - beg), out res))
- return 0;
+ ulong res = 0;
+ while (beg < s.Length) {
+ var c = s[beg];
+ if ('0' <= c && c <= '9') {
+ res *= 10;
+ res += (uint)c - (uint)'0';
+ }
+ beg++;
+ }
return res;
}
@@ -225,11 +228,13 @@ namespace Microsoft.Boogie.ModelViewer
var len = Math.Min(f1.Length, f2.Length);
var numberPos = -1;
for (int i = 0; i < len; ++i) {
- if (char.IsDigit(f1[i]) && char.IsDigit(f2[i])) {
+ var c1 = f1[i];
+ var c2 = f2[i];
+ if ('0' <= c1 && c1 <= '9' && '0' <= c2 && c2 <= '9') {
numberPos = i;
break;
}
- if (f1[i] != f2[i])
+ if (c1 != c2)
break;
}
@@ -477,6 +482,7 @@ namespace Microsoft.Boogie.ModelViewer
ILanguageSpecificModel langModel;
string format;
+ string cachedName;
Model.Element[] args;
public EdgeName(ILanguageSpecificModel n, string format, params Model.Element[] args)
@@ -493,7 +499,10 @@ namespace Microsoft.Boogie.ModelViewer
public override string ToString()
{
- return Format();
+ if (cachedName != null)
+ return cachedName;
+ cachedName = Format();
+ return cachedName;
}
public override int GetHashCode()