diff options
author | Michal Moskal <michal@moskal.me> | 2011-10-19 15:36:14 -0700 |
---|---|---|
committer | Michal Moskal <michal@moskal.me> | 2011-10-19 15:36:14 -0700 |
commit | 39b0ec5cf8900757bb19c13cb692b2414de91475 (patch) | |
tree | 29202b260b0776fbacb13c1fd9ced136357269b8 /Source/ModelViewer/Namer.cs | |
parent | 512562d0c48d7d71b5579476c3e07ba5c3c41817 (diff) |
Performance improvements in BVD
Diffstat (limited to 'Source/ModelViewer/Namer.cs')
-rw-r--r-- | Source/ModelViewer/Namer.cs | 27 |
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()
|