在循环内或循环外声明变量是否更快?例如:
' Declaration inside of the loop
For each item in items
Dim newVariable as String = GetAString()
Next
' Declaration outside of the loop
Dim newVariable as String = String.Empty
For each item in items
newVariable = GetAString()
Next
Run Code Online (Sandbox Code Playgroud)
哪一个更快?为什么?我假设后者更快,因为它只是重复使用相同的"指针"来引用幕后的新值而不是每次迭代创建一个新指针,对吗?有人可以详细说明吗?
谢谢
更新:
编译器足够智能,可以在生成中间语言时优化代码.它将变量声明移动到方法的顶部.下面是编译后IL中的声明:
.locals init ([0] string newVariable2,
[1] int32 i,
[2] string newVariable,
[3] int32 V_3,
[4] int32 VB$CG$t_i4$S0)
Run Code Online (Sandbox Code Playgroud)
对于那些感兴趣的人来说,这是整个IL:
.method private instance void Form1_Load(object sender,
class [mscorlib]System.EventArgs e) cil managed
{
// Code size 55 (0x37)
.maxstack …Run Code Online (Sandbox Code Playgroud) 我注意到在很多使用Flash的网站上使用"预加载器".这应该会让用户觉得在应用程序下载和初始化时网站正在加载.我对这种做法有几个问题.
这真的有帮助吗?从我所看到的情况来看,预加载器本身似乎有很多次图形.这似乎打败了预装载器开始的目的.重图形仅添加到SWF文件的整体大小,这意味着下载需要更长时间.
如何确定预加载器中使用的图形数量?
我试图远程读取二进制(REG_BINARY)注册表值,但我得到的只是垃圾回收.任何想法这个代码有什么问题?我正在使用Delphi 2010:
function GetBinaryRegistryData(ARootKey: HKEY; AKey, AValue, sMachine: string; var sResult: string): boolean;
var
MyReg: TRegistry;
RegDataType: TRegDataType;
DataSize, Len: integer;
sBinData: string;
bResult: Boolean;
begin
bResult := False;
MyReg := TRegistry.Create(KEY_QUERY_VALUE);
try
MyReg.RootKey := ARootKey;
if MyReg.RegistryConnect('\\' + sMachine) then
begin
if MyReg.KeyExists(AKey) then
begin
if MyReg.OpenKeyReadOnly(AKey) then
begin
try
RegDataType := MyReg.GetDataType(AValue);
if RegDataType = rdBinary then
begin
DataSize := MyReg.GetDataSize(AValue);
if DataSize > 0 then
begin
SetLength(sBinData, DataSize);
Len := MyReg.ReadBinaryData(AValue, PChar(sBinData)^, DataSize);
if Len <> DataSize …Run Code Online (Sandbox Code Playgroud) 我想知道是否有相当于ASP.NET MVC2的"New Relic RPM"或"JavaMelody"?我在ASP.NET MVC2上找不到任何有关监控的信息......
任何的想法 ?如何监控ASP.NET MVC2应用程序的性能?
http://code.google.com/p/javamelody/
谢谢
我有一个Powershell脚本,它将通过针对多个服务器的自动化工具运行.它工作正常的Windows机器,远程调用使用该工具的服务帐户,而无需任何提示或代码暴露任何凭据.该脚本还使用SharpSSH软件包通过SSH对Linux机器运行.SharpSSH不会自动使用Powershell用户的凭据,但需要用户名和密码,RSA密钥文件或PSCredential对象.我无法使用Get-Credential提示凭据,因为它是通过自动化工具运行的.我不想在代码中公开用户名和密码,或者在那里放置一个RSA密钥.我想从当前Powershell的用户(服务帐户)构造一个PSCredential对象.试试[System.Net.CredentialCache] ::
有没有人有从当前用户创建PSCredential对象的方法?或者也许是这个问题完全不同的替代方案?
非常感谢!
如何在用户注册时向用户发送欢迎电子邮件?我正在使用Devise gem进行身份验证.SMTP已设置完毕.我只需要了解如何扩展设计以发送电子邮件.
注意 - 这不是确认电子邮件!
UPD解决方案:
class User < ActiveRecord::Base
after_create :send_welcome_email
private
def send_welcome_email
UserMailer.deliver_welcome_email(self)
end
end
Run Code Online (Sandbox Code Playgroud) 我需要在我的类型上实现只读属性.此外,此属性的值将在构造函数中设置,并且不会更改(我正在编写一个为WPF公开自定义路由UI命令的类,但这并不重要).
我认为有两种方法可以做到:
class MyClass
{
public readonly object MyProperty = new object();
}
Run Code Online (Sandbox Code Playgroud)class MyClass
{
private readonly object my_property = new object();
public object MyProperty { get { return my_property; } }
}
Run Code Online (Sandbox Code Playgroud)由于所有这些FxCop错误都说我不应该有公共成员变量,所以第二个似乎是正确的方法.正确?
在这种情况下,get only属性和只读成员之间是否有任何区别?
我将不胜感激任何意见/建议等.
我有一个href元素,它上面有onclick事件.我想在一些事件后更改功能.我尝试使用jquery但旧的和新的函数都被触发了.我只想要新的一个被解雇.
我的代码如下:
<a href='#' id='cvtest' onclick='testMe("One")' >TEST</a>
after some event i am adding following code:
$("#cvtest").click(function(){ testMe("Two"); });
Run Code Online (Sandbox Code Playgroud)
当我点击"测试"链接时,我得到2个警告"一个"和"两个".
如何阻止第一个事件被解雇或是否有任何其他解决方案?
c# ×2
.net ×1
adobe ×1
asp.net-mvc ×1
border ×1
credentials ×1
declaration ×1
delphi ×1
delphi-2009 ×1
delphi-2010 ×1
devise ×1
email ×1
flash ×1
href ×1
iis ×1
jquery ×1
loops ×1
monitoring ×1
onclick ×1
optimization ×1
performance ×1
powershell ×1
properties ×1
readonly ×1
regex ×1
sharpssh ×1
variables ×1
wpf ×1