小编bri*_*ler的帖子

如何在SQL Server中无所事事

可能重复:
T-SQL中的空语句

如何在SQL Server中编译?

IF @value IS NULL
BEGIN
  -- I don't want to do anything here
END
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

35
推荐指数
4
解决办法
4万
查看次数

在VS 2010和VS 2005中编译客户端时,为什么COM互操作层会慢40倍?

我的团队使用大型模拟应用程序的COM API.大多数模拟文件都会运行到数百兆字节,并且在打开时似乎会完全加载到内存中.

我们执行的主要任务是遍历文件的对象模型中的所有元素,然后对每个元素执行"某事".

我们最近将我们的代码库从.NET 2迁移到VS 2010中的.NET 4,并且已经看到迭代速度下降了大约40倍(从大约10秒到大约8分钟).我们已将其减少到最小的代码示例(10行左右); 在VS 2005中编译它,运行它然后在VS 2010中打开项目并编译,将框架保留为2(我们使用制造商提供的COM互操作程序集).

在2005年,测试应用程序在2010年完成10秒,需要8分钟.

可能是什么导致了这个?

UPDATE

代码相当于:

var server = new Server();
var elements = server.Elements;
var elementCount = elements.Count;

for(int i = 0; i < elementsCount; ++i)
{
    var element = elements[i];
}
Run Code Online (Sandbox Code Playgroud)

运行VS 2010的代码比VS 2005长40倍.

更新2

我合理地说,在一种情况下操作可能比另一种情况下显着减慢的唯一原因是数据在不同版本中通过COM进行不同的传输.

我们记录了两个案例的绑定日志,这是我们发现的; 在快速版本CustomMarshalers的天然图像发现(这是由FUSLOGVW捕获的结合日志)

mscorlib程序

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.HTM

快速

LOG: Start binding of native image mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Start validating native image mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
WRN: Native image does not …
Run Code Online (Sandbox Code Playgroud)

c# com visual-studio-2005 visual-studio-2010 visual-studio

30
推荐指数
1
解决办法
2512
查看次数

是或将是布尔值的前缀

当命名一个布尔值或一个返回布尔值的函数时,通常用'is'作为前缀,例如

  • isPointerNull
  • isShapeSquare

什么时候引用多个项目,它应该是:

  • arePointersNull或isPointersNull
  • areShapesNull或isShapesNull

我可以看到两者的论点; 提供一致性,可能稍微更好的可读性,使代码以更自然的方式读取.

任何意见?

coding-style

20
推荐指数
2
解决办法
5178
查看次数

PHP - 如何检查一年是否是二等分(即闰年)?

如何检查php中的一年是否是二等分(即闰年)?

php

16
推荐指数
3
解决办法
1万
查看次数

如何使用代码合同进行单元测试

使用.NET 4.0代码合同进行TDD的最佳实践建议是什么?

我特别想到,我的问题是,鉴于TDD的一个要点是允许代码自我记录并且合同现在提供了文档的一部分,代码合同是否应该像其他代码一样进行测试?

.net code-contracts c#-4.0

12
推荐指数
1
解决办法
3775
查看次数

在动态SQL中SQL Server等效的Oracle绑定变量是什么?

在Oracle中,编写动态SQL时,会执行以下操作:

create or replace procedure myProc(n in number)
as
begin
  execute immediate
   'update myTable set myColumn = :n' 
   using n;
commit;
end;
Run Code Online (Sandbox Code Playgroud)

然后'魔术发生'.SQL Server中等效的概念/语法是什么(如果有的话)?(顺便说一句,我正在使用SQL Server 2005)

t-sql sql-server dynamic-sql

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

如何在SQL Server 2005中查找视图的派生列类型?

例如,假设我有一个视图:

CREATE VIEW [dbo].[PaymentSchedule_vw]
AS
    SELECT
         [Order].Id                [Order Id]
        ,[PaymentSchedule].Date    [Payment Date]
    FROM
        _Order123 [Order]
        INNER JOIN
            _Order123_Shedule [PaymentSchedule]
            ON
            [Order].Id = [PaymentSchedule].OrderId

GO
Run Code Online (Sandbox Code Playgroud)

如何寻找的类型[Order Id][Payment Date]

t-sql sql-server-2005

7
推荐指数
2
解决办法
6989
查看次数

从第二个AppDomain管理到非托管转换非常慢

设置如下:

  • 主应用程序域从C++/CLI程序集加载许多非托管C++库.
  • 第二个应用程序域加载那些C++库,但当然它只是获取以前加载的库的句柄.
  • 我在两个使用非托管C++库的应用程序域中运行完全相同的托管C#代码.
  • C++/CLI程序集包含托管代码和非托管代码的混合.

从主应用程序域调用非托管C++库时,与总执行成本相比,托管到非托管转换的成本相当可忽略不计.但是,从最初没有加载库的第二个应用程序域,托管到非托管转换的成本变得很大; 数量级更大.我知道这是因为我已经运行了ANTS性能分析器,这就是它告诉我的.

C++/CLI程序集中有一些非托管静态变量,我在创建新的应用程序域时尝试替换它们,但这并没有改变性能.很可能会有一堆隐藏的.

这可能会发生什么?为什么其他应用领域的转换速度如此之慢?试图改善事情有什么明显之处吗?

某些上下文:代码在单独的应用程序域中运行以进行隔离,以便在出现问题时将其拆除.将它与主app域隔离是非常好的.可以启动一个运行非托管代码的新进程,但这可能很昂贵,因为它可能需要大量数据进行序列化和反序列化,并且在新进程中引导所有内容的成本也相当大.在一般情况下,序列化和引导程序的成本将远远低于我所看到的托管到非托管转换的成本,但是涉及到很多混乱,它仍然会减慢很多事情.

c# c++-cli appdomain

7
推荐指数
0
解决办法
336
查看次数

用于查找与一组属性匹配的行的TSQL查询

我有以下简化架构:

CREATE TABLE [file]
( 
    id UNIQUEIDENTIFIER NOT NULL, 
    uri NVARCHAR(MAX) NOT NULL, 
    CONSTRAINT PK_file PRIMARY KEY (id ASC) ON [PRIMARY] 
)

CREATE TABLE [property]
( 
    id UNIQUEIDENTIFIER NOT NULL, 
    name NVARCHAR(MAX) NOT NULL, 
    CONSTRAINT PK_property PRIMARY KEY (id ASC) ON [PRIMARY] 
)

CREATE TABLE [metadata]
( 
    fileid UNIQUEIDENTIFIER NOT NULL,
    propertyid UNIQUEIDENTIFIER NOT NULL,
    value NVARCHAR(MAX) NOT NULL, 
    CONSTRAINT PK_metadata PRIMARY KEY (fileid, propertyid ASC) ON [PRIMARY] 
)
Run Code Online (Sandbox Code Playgroud)

[fileid]FKS到[file].[id][propertyid]FKS到[property].[id].假设[properyid]是 …

sql t-sql sql-server

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

无法在Visual Studio 2015中签署C++/CLI程序集

使用Visual Studio 2015,使用2015工具集:当我尝试直接签署程序集时,如下所示:

签署C++/CLI程序集

签名总是失败,并出现以下错误: LNK1346 ALINK operation failed (80040436) : Error signing assembly -- The process cannot access the file because it is being used by another process.

可以在Visual Studio 2013中签署相同的程序集(我今天刚刚升级了它).

这是2015年的一个已知问题(当我搜索该错误时找不到任何错误)?或者我做错了什么?

编辑:解决方法

这似乎是另一个McAfee AV错误.但是,还有另一种方法可以对文件进行签名,这可能会让McVirus有足够的时间释放它已经取出的锁.

程序集可以延迟签名,sn -R $(TargetPath) $(LinkKeyFile)可以作为post build事件运行以完成签名.这适用于我和@Moop.

c++-cli visual-studio-2015

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