1
1
IF OBJECT_ID (' dbo.sp_BenchmarkTSQL' , ' P' ) IS NULL
2
- EXECUTE (' CREATE PROCEDURE dbo.sp_BenchmarkTSQL AS SELECT 1' );
2
+ EXECUTE (' CREATE PROCEDURE dbo.sp_BenchmarkTSQL AS SELECT 1; ' );
3
3
GO
4
- ALTER PROCEDURE [dbo].[sp_BenchmarkTSQL]
5
- (
4
+ ALTER PROCEDURE dbo .sp_BenchmarkTSQL (
6
5
@tsqlStatement NVARCHAR (MAX ) = N ' '
7
6
, @numberOfExecution INT = 10
8
7
, @saveResults BIT = 0
9
8
, @clearCache BIT = 0
10
9
, @calcMedian BIT = 0
11
10
)
12
- AS
13
11
/*
14
12
.SYNOPSIS
15
13
Calculate SQL statement execution time, save results if need.
44
42
.NOTE
45
43
Author: Aleksei Nagorskii
46
44
*/
45
+ AS
47
46
BEGIN TRY
48
- SET NOCOUNT OFF ;
47
+
48
+ SET NOCOUNT ON ;
49
49
50
50
IF @tsqlStatement IS NULL
51
51
THROW 55001 , ' @tsqlStatement is NULL, please specify TSQL statement.' , 1 ;
@@ -70,6 +70,7 @@ BEGIN TRY
70
70
THROW 55002 , @err_msg, 1 ;
71
71
END
72
72
73
+ DECLARE @crlf VARCHAR (10 ) = CHAR (10 );
73
74
DECLARE @cts DATETIME = CURRENT_TIMESTAMP ;
74
75
DECLARE @r INT = 0 ;
75
76
DECLARE @handle VARBINARY (64 );
@@ -87,7 +88,7 @@ BEGIN TRY
87
88
ClearCache BIT
88
89
);
89
90
90
- PRINT CONCAT (' Benchmark started at ', CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ))
91
+ PRINT (' Benchmark started at ' + CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ))
91
92
WHILE @r < @numberOfExecution
92
93
BEGIN
93
94
SET @r = @r + 1 ;
@@ -102,7 +103,7 @@ BEGIN TRY
102
103
DBCC FREEPROCCACHE (@handle);
103
104
END
104
105
EXECUTE sp_executesql @tsqlStatement;
105
- PRINT CONCAT (' Run ', @r, ' , start at ', CONVERT (VARCHAR (23 ), @rts, 121 ), ' , finish at ', CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ), ' , duration: ', DATEDIFF (ms, @rts, CURRENT_TIMESTAMP ), ' ms.' );
106
+ PRINT (' Run ' + CAST (@r AS VARCHAR ( 30 )) + ' , start at ' + CONVERT (VARCHAR (23 ), @rts, 121 ) + ' , finish at ' + CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ) + ' , duration: ' + CAST ( DATEDIFF (ms, @rts, CURRENT_TIMESTAMP ) AS VARCHAR ( MAX )) + ' ms.' );
106
107
INSERT @t
107
108
VALUES (
108
109
@cts,
@@ -125,15 +126,17 @@ BEGIN TRY
125
126
(SELECT MIN (TMAX) FROM
126
127
(SELECT TOP 50 PERCENT DATEDIFF (ms, RunTimeStamp, FinishTimeStamp) AS TMAX FROM @t ORDER BY TMAX DESC ) AS TopHalf)
127
128
) / 2 .0
128
- PRINT CONCAT (' Min: ', @min, ' ms, average: ', @avg, ' ms, max: ', @max, ' ms, median: ', @median, ' ms.', CHAR ( 13 ), ' Benchmark finished at ', CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ), ' .' )
129
+ PRINT (' Min: ' + CAST ( @min AS VARCHAR ( 30 )) + ' ms, average: ' + CAST ( @avg AS VARCHAR ( 30 )) + ' ms, max: ' + CAST ( @max AS VARCHAR ( 30 )) + ' ms, median: ' + CAST ( @median AS VARCHAR ( 30 )) + ' ms.' + @crlf + ' Benchmark finished at ' + CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ) + ' .' )
129
130
END
130
131
ELSE
131
- PRINT CONCAT (' Min: ', @min, ' ms, average: ', @avg, ' ms, max: ', @max, ' ms.', CHAR ( 13 ), ' Benchmark finished at ', CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ), ' .' )
132
+ PRINT (' Min: ' + CAST ( @min AS VARCHAR ( 30 )) + ' ms, average: ' + CAST ( @avg AS VARCHAR ( 30 )) + ' ms, max: ' + CAST ( @max AS VARCHAR ( 30 )) + ' ms.' + @crlf + ' Benchmark finished at ' + CONVERT (VARCHAR (23 ), CURRENT_TIMESTAMP , 121 ) + ' .' )
132
133
IF @saveResults = 1
133
134
IF OBJECT_ID (' .[dbo].[BenchmarkTSQL]' , ' U' ) IS NULL
134
135
SELECT * INTO [dbo].[BenchmarkTSQL] FROM @t
135
136
ELSE
136
- INSERT INTO [dbo].[BenchmarkTSQL] SELECT * FROM @t
137
+ INSERT INTO [dbo].[BenchmarkTSQL] SELECT * FROM @t;
138
+
139
+ SET NOCOUNT ON ;
137
140
END TRY
138
141
139
142
BEGIN CATCH
0 commit comments