小编sco*_*rin的帖子

在vb.net中跟踪函数调用的持续时间

在我们的VB6应用程序中,我们添加了一些实用程序函数来跟踪函数中花费的时间.我们这样做是为了跟踪性能瓶颈.

基本上,它是如何工作的有两个实用程序函数:StartTickCount()和EndTickCount().您可以在每个函数中传递函数的名称,函数将使用字典来获取调用StartTickCount()时的滴答计数,然后在调用EndTickCount()时减去滴答计数.这并不完美,因为它当然没有考虑到获取滴答计数的要求需要时间等,但基本上它适用于我们的目的.对接部分的痛苦是确保在每个函数的开头调用StartTickCount()并在每个出口点调用EndTickCount():

Private Function SomeFuction() as String
    ' indicate the function started
    StartTickCount("MyClass.SomeFunction")


    ' some logic that causes the function to end
    If (some logic) Then
        EndTickCount("MyClass.SomeFunction")
        Return "Hello!"
    End If

    ' final exit point
    EndTickCount("MyClass.SomeFunction")
    Return "World"
End Function
Run Code Online (Sandbox Code Playgroud)

无论如何,是否通过VS 2010调试器或System.Reflection命名空间内置任何功能来在VB.NET中执行类似的操作?

基本上,我想要的是记录每个函数被调用的次数,在该函数中花费的总时间,在该函数中花费的平均秒数,以及在单个调用中花费的最大时间.功能.

我当然可以手工编写(因为我们已经在VB6中执行了一次),但是如果有现有的工具可以使它更容易,我宁愿使用它们.

vb.net debugging visual-studio-2010 performance-testing visual-studio-debugging

5
推荐指数
2
解决办法
1万
查看次数

防止LINQ到实体联接中的NULL检查

我们有一张叫做的桌子Student.该表有一个名为的字段Homeroom,其中值是学生教室的房间号.该值可以为null.

我们有一个名为的第二个表Staff.该表还有一个字段,Homeroom用于指示教师分配到哪个教室.该值可以为null.

但是当学生Homeroom为空时,Staff不应返回记录.

我们曾经利用这样的事实:检查两个空字段的相等性总是在SQL中返回false.通过SQL,这就是我们获取所需数据的方式:

SELECT STUDENT.ID, STAFF.NAME as [Homeroom Teacher]
FROM STUDENT
LEFT OUTER JOIN STAFF ON
    STAFF.BUILDING = STUDENT.BUILDING AND
    STAFF.HOMEROOM = STUDENT.HOMEROOM
Run Code Online (Sandbox Code Playgroud)

学生将被退回,但没有老师.

我们正在使用Entity Framework和Code First POCO对象.所以,我们有一个Student对象和一个Staff对象.当我们在LINQ中重新创建此SQL时:

from student in repo.GetStudents()
join homeroomTeacher in repo.GetStaff()
    new { student.Building, Room = student.Homeroom }
     equals new { homeroomTeacher.Building, Room = homeroomTeacher.Homeroom }
into roj2
from homeroomTeacherRoj in roj2.DefaultIfEmpty()
select student.Id, homeroomTeacherRoj.Name;
Run Code Online (Sandbox Code Playgroud)

生成的SQL包含两个Homeroom字段的NULL检查:

SELECT STUDENT.ID, STAFF.NAME
FROM STUDENT AS …
Run Code Online (Sandbox Code Playgroud)

sql linq-to-entities entity-framework outer-join ef-code-first

4
推荐指数
1
解决办法
2570
查看次数

使用比例和精度计算小数的最大值

我正在开发一个JavaScript函数,它接受两个值:十进制值的精度和十进制值的比例.

此函数应计算可以以该大小的十进制存储的最大值.

例如:精度为5且标度为3的小数最大值为99.999.

我有什么工作,但它不优雅.谁能想到更聪明的东西?

另外,请原谅使用这种古怪的匈牙利表示法.

function maxDecimalValue(pintPrecision, pintScale) {
    /* the maximum integers for a decimal is equal to the precision - the scale.
        The maximum number of decimal places is equal to the scale.
        For example, a decimal(5,3) would have a max value of 99.999
    */
    // There's got to be a more elegant way to do this...
    var intMaxInts = (pintPrecision- pintScale);
    var intMaxDecs = pintScale;

    var intCount;
    var strMaxValue = "";

    // build the max number.  Start …
Run Code Online (Sandbox Code Playgroud)

javascript math decimal

2
推荐指数
1
解决办法
1981
查看次数