在我们的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
我们有一张叫做的桌子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
我正在开发一个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)