如果我有一个像这样的方法:
public SomeObject GetObject(int ID){
SomeObject obj1 = new SomeObject();
obj1.ID = ID;
return obj1;
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我使用这样的方法:
SomeObject obj2 = GetObject(4);
Run Code Online (Sandbox Code Playgroud)
将obj2仅仅作为内存中的引用obj1,还是将其复制到内存中并存在两个完整的对象?
obj1如果后者是真的,GC什么时候会从内存中删除?
我正在从.net调用一些参数化的sql.我不确定为什么但是当检查参数是否为NULL时,sql运行速度非常慢,而不包括:
所以这:
exec sp_executesql N'
SELECT [id]
FROM [tblAddress] (nolock)
WHERE 1 = 1
AND ([id] = @id OR @id IS NULL)
',N'@id int',
@id=4395
Run Code Online (Sandbox Code Playgroud)
然后运行得更快:
exec sp_executesql N'
SELECT [id]
FROM [tblAddress] (nolock)
WHERE 1 = 1
AND ([id] = @id)
',N'@id int',
@id=4395
Run Code Online (Sandbox Code Playgroud)
运行SQL事件探查器超过100万行的最高查询的持续时间为175,其读取为3720,但第二个查询的持续时间为1,只有3个读取.
为什么会有这样的差异?如何改进呢?
我曾经使用过一个工具,它可以捕获http请求,然后它也可以生成c#代码,因此我可以手动处理请求并再次运行它们。有人知道该工具的名称吗?
在任何地方,我都在寻找有关Windsor或Spring.net的信息,它总是参考MVC.试图为Web表单项目或wcf实现它有什么意义吗?
c# ×2
.net ×1
http ×1
memory ×1
request ×1
return-value ×1
sql ×1
sql-server ×1
t-sql ×1
wcf ×1