我需要在Windows中对.NET程序(C#)做一些性能基准测试,但我还没有在Windows世界中做过很多基准测试.我已经研究过使用带有自定义计数器的Windows 2000/XP性能监视器,但我认为这不是我想要的.
在Windows XP中是否有适用于此的良好系统设施,或者我是否需要使用System.Diagnostics.Stopwatch [编辑]并编写文本日志以进行手动解释,或者还有其他什么?
编辑:除此之外还有什么System.Diagnostics.Stopwatch?
我的理解是C/C++生成在特定机器架构上运行的本机代码.相反,Java和C#等语言运行在虚拟机之上,该虚拟机将本机架构抽象化.逻辑上,由于这个中间步骤,Java或C#似乎不可能匹配C++的速度,但是我被告知最新的编译器("热点")可以达到这个速度甚至超过它.
也许这更像是一个编译问题,而不是一个语言问题,但任何人都可以用简单的英语解释这些虚拟机语言之一如何比母语更好地执行?
我使用很多Web应用程序,这些应用程序由后端不同复杂程度的数据库驱动.通常,存在与业务和表示逻辑分离的ORM层.这使得对业务逻辑的单元测试相当简单; 事物可以在离散模块中实现,测试所需的任何数据都可以通过对象模拟来伪造.
但是测试ORM和数据库本身一直充满了问题和妥协.
多年来,我尝试了一些策略,其中没有一个完全满足我.
使用已知数据加载测试数据库.针对ORM运行测试并确认正确的数据返回.这里的缺点是您的测试数据库必须跟上应用程序数据库中的任何模式更改,并且可能会不同步.它还依赖于人工数据,并且可能不会暴露由于愚蠢的用户输入而发生的错误.最后,如果测试数据库很小,它将不会显示缺失索引等低效率.(好吧,最后一个不是真的应该使用单元测试,但它没有受到伤害.)
加载生产数据库的副本并对其进行测试.这里的问题是你可能不知道在任何给定时间生产数据库中有什么; 如果数据随时间变化,您的测试可能需要重写.
有些人指出,这两种策略都依赖于特定的数据,单元测试应该只测试功能.为此,我见过建议:
您使用了哪些策略来测试数据库驱动的应用程序?什么对你有用?
我的单例访问器方法通常是以下的一些变体:
static MyClass *gInstance = NULL;
+ (MyClass *)instance
{
@synchronized(self)
{
if (gInstance == NULL)
gInstance = [[self alloc] init];
}
return(gInstance);
}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来改善这个?
注意:我对GCC工具链知之甚少,所以这个问题可能没有多大意义.
由于GCC包含Ada前端,并且它可以发出ARM,而devKitPro基于GCC,是否可以使用Ada而不是C/C++在DS上编写代码?
编辑:似乎devKitARM使用的目标是arm-eabi.
我正在使用github上找到的当前版本的restful_authentication,我遇到了一堆奇怪的会话问题.服务器似乎以某种方式将会话分配给不应该的用户.只有在越过已登出/登录的障碍时才会发生这种情况.
这是一个例子.随着服务器上的活动没有会话,我登录到与用户A在另一台计算机的帐户,我注销用户B的时候,注销重定向发生后的某个时间,我将被记录在与用户B登录然后用户A.从这一点开始,我可以继续浏览网站,就像我以该用户身份登录一样!我通过日志观察到的一点是,当发生这种劫持时,会话ID不一样.用户A在两个会话中都已登录,但会话ID完全不同.这只是可能发生的一个例子.我无法可靠地重现这个问题,因为它似乎是随机的.
它似乎不是环境或运行的服务器的症状.我可以使用杂种和乘客重现这个问题.我也在开发和生产中看到过它.我在这个应用程序中使用基于数据库的会话,它在Rails 2.1.1上运行.我在调用生成器时应用了有状态选项.否则,不会对会话的处理方式进行其他修改.
更新此处是直接来自restful_authentication的有问题的方法.
# Accesses the current user from the session.
# Future calls avoid the database because nil is not equal to false.
def current_user
@current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
end
Run Code Online (Sandbox Code Playgroud) 现在我在*scratch*缓冲区中编写表达式并通过评估来测试它们C-x C-e.我真的很感激有一个像SLIME或irb这样的交互式解释器,我可以在其中测试Emacs Lisp表达式.
我想问题是不言自明的,但我想知道HTML是否有资格作为编程语言(显然"L"代表语言).
问的原因是更务实 - 我正在整理一份简历,并且不希望看起来像在语言下列出HTML和XML之类的东西,但无法弄清楚如何对它们进行分类.
存储记录标签的最佳方法是什么?只需使用varchar字段?选择包含标记x的行时怎么办?使用like运算符?
谢谢!
我知道IronPython是.NET平台上的Python实现,就像IronRuby是Ruby的实现一样,F#或多或少都是OCaml.
我无法理解的是这些语言是否更接近他们的"祖先",或者更接近C#这样的速度.例如,IronPython是否以某种方式"编译"到C#使用的相同字节码,因此运行速度一样快?
performance ×3
.net ×2
c# ×2
ada ×1
benchmarking ×1
bytecode ×1
c++ ×1
database ×1
elisp ×1
emacs ×1
embedded ×1
gcc ×1
homebrew ×1
html ×1
interpreter ×1
ironpython ×1
java ×1
mocking ×1
nintendo-ds ×1
objective-c ×1
orm ×1
rest ×1
ruby ×1
singleton ×1
sql-server ×1
tags ×1
unit-testing ×1
windows ×1