Skip to content

Commit

Permalink
Perf: Reduce tracing related allocations from TVP write (#557)
Browse files Browse the repository at this point in the history
  • Loading branch information
Wraith2 committed May 15, 2020
1 parent ef98921 commit 3e5e84c
Showing 1 changed file with 9 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8872,6 +8872,8 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo
// Stream out parameters
int parametersLength = rpcext.userParamCount + rpcext.systemParamCount;

bool isAdvancedTraceOn = SqlClientEventSource.Log.IsAdvancedTraceOn();

for (int i = (ii == startRpc) ? startParam : 0; i < parametersLength; i++)
{
byte options = 0;
Expand Down Expand Up @@ -8904,7 +8906,7 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo

if (mt.IsNewKatmaiType)
{
WriteSmiParameter(param, i, 0 != (options & TdsEnums.RPC_PARAM_DEFAULT), stateObj);
WriteSmiParameter(param, i, 0 != (options & TdsEnums.RPC_PARAM_DEFAULT), stateObj, isAdvancedTraceOn);
continue;
}

Expand Down Expand Up @@ -9601,7 +9603,7 @@ private void WriteParameterName(string parameterName, TdsParserStateObject state
}
}

private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefault, TdsParserStateObject stateObj)
private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefault, TdsParserStateObject stateObj, bool advancedTraceIsOn)
{
//
// Determine Metadata
Expand Down Expand Up @@ -9651,8 +9653,11 @@ private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefa
typeCode = MetaDataUtilsSmi.DetermineExtendedTypeCodeForUseWithSqlDbType(metaData.SqlDbType, metaData.IsMultiValued, value, null);
}

var sendDefaultValue = sendDefault ? 1 : 0;
SqlClientEventSource.Log.AdvancedTraceEvent("<sc.TdsParser.WriteSmiParameter|ADV> {0}, Sending parameter '{1}', default flag={2}, metadata:{3}", ObjectID, param.ParameterName, sendDefaultValue, metaData.TraceString(3));
if (advancedTraceIsOn)
{
var sendDefaultValue = sendDefault ? 1 : 0;
SqlClientEventSource.Log.AdvancedTraceEvent("<sc.TdsParser.WriteSmiParameter|ADV> {0}, Sending parameter '{1}', default flag={2}, metadata:{3}", ObjectID, param.ParameterName, sendDefaultValue, metaData.TraceString(3));
}

//
// Write parameter metadata
Expand Down

0 comments on commit 3e5e84c

Please sign in to comment.