Groups | Blog | Home
all groups > dotnet ado.net > october 2007 >

dotnet ado.net : there seems to be some overhead between SQL Server 2005 and a CLR function written in C#. Why is this?



DR
10/26/2007 9:24:24 PM
there seems to be some overhead between SQL Server 2005 and a CLR function
written in C#. Why is this?

I have a simple wraper around System.Diagnostics.Stopwatch.GetTimestamp() :

public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static long GetTimestampF()
{
return System.Diagnostics.Stopwatch.GetTimestamp();
}
};


but if i run this it is hardly accurate. the time of getting from sql server
to a CLR function seems to be relatively slow for nanosecond calculations:

DECLARE @before bigint
DECLARE @after bigint
SET @before = dbo.GetTimestampF()
-- do something
SET @after = dbo.GetTimestampF()
SELECT @after - @before as nanoseconds

is there nyway to elimitate this overhead so that dbo.GetTimestampF()
executes as fast for TSQL as it is to call GetTimestampF() in C#?

If i call my GetTimestampF() on c# it executes fast enough for the
nanosecond results to be accurate

Cor Ligthert[MVP]
10/27/2007 7:21:09 PM
DR,

An Windows system will never be able to calculate exact times. Even not in
milliseconds. Have a look at your tasks how many there are runing including
those who starts a soon as it is a little bit iddle. (Virusscanners etc).

Cor
AddThis Social Bookmark Button