Skip to content

Commit 9d4b3db

Browse files
[NetFx] Perf: Reduce tracing related allocations from TVP write (dotnet#564)
Port dotnet#557 to NetFx driver
1 parent 3e5e84c commit 9d4b3db

File tree

1 file changed

+8
-3
lines changed
  • src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient

1 file changed

+8
-3
lines changed

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

+8-3
Original file line numberDiff line numberDiff line change
@@ -9689,6 +9689,8 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo
96899689

96909690
// Stream out parameters
96919691
SqlParameter[] parameters = rpcext.parameters;
9692+
9693+
bool isAdvancedTraceOn = SqlClientEventSource.Log.IsAdvancedTraceOn();
96929694

96939695
for (int i = (ii == startRpc) ? startParam : 0; i < parameters.Length; i++)
96949696
{
@@ -9723,7 +9725,7 @@ internal Task TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, int timeout, boo
97239725

97249726
if (mt.IsNewKatmaiType)
97259727
{
9726-
WriteSmiParameter(param, i, 0 != (rpcext.paramoptions[i] & TdsEnums.RPC_PARAM_DEFAULT), stateObj);
9728+
WriteSmiParameter(param, i, 0 != (rpcext.paramoptions[i] & TdsEnums.RPC_PARAM_DEFAULT), stateObj, isAdvancedTraceOn);
97279729
continue;
97289730
}
97299731

@@ -10456,7 +10458,7 @@ private void WriteParameterName(string parameterName, TdsParserStateObject state
1045610458
}
1045710459

1045810460
private static readonly IEnumerable<SqlDataRecord> __tvpEmptyValue = new List<SqlDataRecord>().AsReadOnly();
10459-
private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefault, TdsParserStateObject stateObj)
10461+
private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefault, TdsParserStateObject stateObj, bool advancedTraceIsOn)
1046010462
{
1046110463
//
1046210464
// Determine Metadata
@@ -10508,7 +10510,10 @@ private void WriteSmiParameter(SqlParameter param, int paramIndex, bool sendDefa
1050810510
}
1050910511

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

1051310518
//
1051410519
// Write parameter metadata

0 commit comments

Comments
 (0)