From 9d4b3db593ed6be652319e972f5f9f4e077470c0 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Fri, 15 May 2020 16:31:26 -0700 Subject: [PATCH] [NetFx] Perf: Reduce tracing related allocations from TVP write (#564) Port #557 to NetFx driver --- .../netfx/src/Microsoft/Data/SqlClient/TdsParser.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs index d97a5aa2bd..0cc8e27a7a 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -9689,6 +9689,8 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo // Stream out parameters SqlParameter[] parameters = rpcext.parameters; + + bool isAdvancedTraceOn = SqlClientEventSource.Log.IsAdvancedTraceOn(); for (int i = (ii == startRpc) ? startParam : 0; i < parameters.Length; i++) { @@ -9723,7 +9725,7 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo if (mt.IsNewKatmaiType) { - WriteSmiParameter(param, i, 0 != (rpcext.paramoptions[i] & TdsEnums.RPC_PARAM_DEFAULT), stateObj); + WriteSmiParameter(param, i, 0 != (rpcext.paramoptions[i] & TdsEnums.RPC_PARAM_DEFAULT), stateObj, isAdvancedTraceOn); continue; } @@ -10456,7 +10458,7 @@ private void WriteParameterName(string parameterName, TdsParserStateObject state } private static readonly IEnumerable __tvpEmptyValue = new List().AsReadOnly(); - 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 @@ -10508,7 +10510,10 @@ private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefa } var sendDefaultValue = sendDefault ? 1 : 0; - SqlClientEventSource.Log.AdvancedTraceEvent(" {0}, Sending parameter '{1}', default flag={2}, metadata:{3}", ObjectID, param.ParameterName, sendDefaultValue, metaData.TraceString(3)); + if (advancedTraceIsOn) + { + SqlClientEventSource.Log.AdvancedTraceEvent(" {0}, Sending parameter '{1}', default flag={2}, metadata:{3}", ObjectID, param.ParameterName, sendDefaultValue, metaData.TraceString(3)); + } // // Write parameter metadata