以下是:
MyObject myVariable;
for(int i = 0; i < objects.Length, i++){
  myVariable = objects[i];
  // do stuff...
}
效率更高:
for(int i = 0; i < objects.Length, i++){
  MyObject myVariable = objects[i];
  // do stuff...
}
因为每次都不会创建一个用于保存引用的新变量?(或者编译器足够智能,只是为了使用相同的变量)..
(如果创建了一个新变量,它是否在堆上进行了malloced?)
最好做的是:
variable1Type foo; 
variable2Type baa; 
foreach(var val in list) 
{
    foo = new Foo( ... ); 
    foo.x = FormatValue(val); 
    baa = new Baa(); 
    baa.main = foo; 
    baa.Do();
}
要么:
foreach(var val in list) 
{
    variable1Type foo = new Foo( ... ); 
    foo.x = FormatValue(val); 
    variable2Type baa = new Baa(); 
    baa.main = foo; 
    baa.Do();
}
问题是:什么是更快的1例或2例?区别是微不足道的吗?它在实际应用中是否相同?这可能是一个优化微观,但我真的想知道哪个更好.
我传递了一个参数列表。如“名称”、“ID”、“类型”。url 中会有很多这样的内容,如下所示:
"Name=blah1,Id=231,Type=blah1;Name=blah2,Id=2221,Type=blah1;Name=blah3,Id=45411,Type=blah3;"
我想知道是否有办法将这些查询参数映射到对象列表。所以,我可以创建一个对象:
MyTestObject {Name;Id;Type} 并且可以在我的控制器中说
Index(IList<MyTestObject> params)
params 将填充来自查询字符串的数据。
类似于http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx 的东西
以下是我正在使用的代码
private void TestFunction()
{
  foreach (MySampleClass c in dictSampleClass)
  {
    String sText = c.VAR1 + c.VAR2 + c.VAR3
    PerformSomeTask(sText,c.VAR4);
  }
}
我的朋友已经建议改为(以提高性能.dictSampleClass是一个字典.它有10K对象)
private void TestFunction()
{
  String sText="";
  foreach (MySampleClass c in dictSampleClass)
  {
    sText = c.VAR1 + c.VAR2 + c.VAR3
    PerformSomeTask(sText,c.VAR4);
  }
}
我的问题是,"上述变化会改善绩效吗?如果是,怎么样?"
哇,这比预期的反应更多.大多数人都说"C#编译器可以解决这个问题".那么c编译器呢?
我正在运行一些完全为效率而构建的实现.我对这个主题还不是很有经验,并且想知道何时最好地声明变量.我的代码的以下部分特别是:
//Variables not declared in the next part are declared here (like xx, y1, x1.....)
    for(s = 0; s < this.Width; s++)
        {
            y = ymin;
            for(z = 0; z < this.Height; z++)
            {
                x1 = 0;
                y1 = 0;
                looper = 0;
                while(looper < curMaxIter && Math.Sqrt((x1 * x1) + (y1 * y1)) < 2)
                {
                    looper++;
                    xx = (x1 * x1) - (y1 * y1) + x;
                    y1 = 2 * x1 * y1 + y;
                    x1 = …c# ×5
.net ×1
asp.net-mvc ×1
cpu-speed ×1
declaration ×1
linq ×1
oop ×1
performance ×1
scope ×1
variables ×1