Home All Groups Group Topic Archive Search About

there seems to be some overhead between SQL Server 2005 and a CLR function written in C#. Why is thi

Author
27 Oct 2007 4:24 AM
DR
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

Author
27 Oct 2007 5:21 PM
Cor Ligthert[MVP]
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