Skip to content

Commit 3e5e84c

Browse files
authored
Perf: Reduce tracing related allocations from TVP write (dotnet#557)
1 parent ef98921 commit 3e5e84c

File tree

1 file changed

+9
-4
lines changed
  • src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient

1 file changed

+9
-4
lines changed

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8872,6 +8872,8 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo
88728872
// Stream out parameters
88738873
int parametersLength = rpcext.userParamCount + rpcext.systemParamCount;
88748874

8875+
bool isAdvancedTraceOn = SqlClientEventSource.Log.IsAdvancedTraceOn();
8876+
88758877
for (int i = (ii == startRpc) ? startParam : 0; i < parametersLength; i++)
88768878
{
88778879
byte options = 0;
@@ -8904,7 +8906,7 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo
89048906

89058907
if (mt.IsNewKatmaiType)
89068908
{
8907-
WriteSmiParameter(param, i, 0 != (options & TdsEnums.RPC_PARAM_DEFAULT), stateObj);
8909+
WriteSmiParameter(param, i, 0 != (options & TdsEnums.RPC_PARAM_DEFAULT), stateObj, isAdvancedTraceOn);
89088910
continue;
89098911
}
89108912

@@ -9601,7 +9603,7 @@ private void WriteParameterName(string parameterName, TdsParserStateObject state
96019603
}
96029604
}
96039605

9604-
private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefault, TdsParserStateObject stateObj)
9606+
private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefault, TdsParserStateObject stateObj, bool advancedTraceIsOn)
96059607
{
96069608
//
96079609
// Determine Metadata
@@ -9651,8 +9653,11 @@ private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefa
96519653
typeCode = MetaDataUtilsSmi.DetermineExtendedTypeCodeForUseWithSqlDbType(metaData.SqlDbType, metaData.IsMultiValued, value, null);
96529654
}
96539655

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

96579662
//
96589663
// Write parameter metadata

0 commit comments

Comments
 (0)