public void InstanceFieldNormalObjectVSMarshalByRefObject() { TestName("Instance Field Normal Object vs. MarshalByRefObject Tests"); int iterations = 100000000; NormalObject no = new NormalObject(); CodeTimer.Time("Normal object instance field", iterations, () => no.m_field++); MBRObject mbro = new MBRObject(); CodeTimer.Time("MarshalByRefObject instance field", iterations, () => mbro.m_field++); }
private static bool ParseNestedObject( List<AnnotationToken> tokenList, ref int nextToken, ref NestedObject result, ref int fareastError, bool supportMoreFieldType = false) { int currentToken = nextToken; string tokenStr = null; if (ReadToken(tokenList, AnnotationTokenType.LeftBrace, ref currentToken, ref tokenStr, ref fareastError)) { string fieldName = null; NestedObject fieldValue = null; CollectionObject collectionObj = new CollectionObject() { Collection = new Dictionary<string, NestedObject>() }; // Field Name can be a NameToken or a DoubleQuotedString if ((ReadToken(tokenList, AnnotationTokenType.DoubleQuotedString, ref currentToken, ref fieldName, ref fareastError) || ReadToken(tokenList, AnnotationTokenType.NameToken, ref currentToken, ref fieldName, ref fareastError)) && ReadToken(tokenList, AnnotationTokenType.Colon, ref currentToken, ref tokenStr, ref fareastError) && ParseNestedObject(tokenList, ref currentToken, ref fieldValue, ref fareastError, supportMoreFieldType)) { collectionObj.Collection[fieldName.ToLower()] = fieldValue; } else { return false; } while (ReadToken(tokenList, AnnotationTokenType.Comma, ref currentToken, ref tokenStr, ref fareastError) && (ReadToken(tokenList, AnnotationTokenType.DoubleQuotedString, ref currentToken, ref fieldName, ref fareastError) || ReadToken(tokenList, AnnotationTokenType.NameToken, ref currentToken, ref fieldName, ref fareastError)) && ReadToken(tokenList, AnnotationTokenType.Colon, ref currentToken, ref tokenStr, ref fareastError) && ParseNestedObject(tokenList, ref currentToken, ref fieldValue, ref fareastError, supportMoreFieldType)) { collectionObj.Collection[fieldName.ToLower()] = fieldValue; } if (!ReadToken(tokenList, AnnotationTokenType.RightBrace, ref currentToken, ref tokenStr, ref fareastError)) { return false; } result = collectionObj; nextToken = currentToken; return true; } else if ( ReadToken(tokenList, AnnotationTokenType.DoubleQuotedString, ref currentToken, ref tokenStr, ref fareastError) ) { StringObject stringObj = new StringObject() { Value = tokenStr }; result = stringObj; nextToken = currentToken; return true; } else if (supportMoreFieldType && (ReadToken(tokenList, AnnotationTokenType.Integer, ref currentToken, ref tokenStr, ref fareastError) || ReadToken(tokenList, AnnotationTokenType.Double, ref currentToken, ref tokenStr, ref fareastError) || ReadToken(tokenList, AnnotationTokenType.Binary, ref currentToken, ref tokenStr, ref fareastError) || ReadToken(tokenList, AnnotationTokenType.SingleQuotedString, ref currentToken, ref tokenStr, ref fareastError))) { NormalObject normalObject = new NormalObject { Value = tokenStr }; result = normalObject; nextToken = currentToken; return true; } else { return false; } }