热点知道,就是想知道一些vs中的优化技巧。例如在vc++2003中开启/G7可以使用SSE2优化,使用一维数组比二维数组快这些优化技巧。

解决方案 »

  1.   

    CLR会自动产生为特定平台优化的代码,包括特定指令集的优化。另外考虑使用C# 4.0,将程序并行化。实践表明,在一个4核心电脑上,这样做很容易提高2~3倍的速度。
      

  2.   

    金旭亮老师有一些入门的文章,你可以Google之。
      

  3.   

    沒有多線程的話,一般會是代碼問題,代碼的冗餘,以及一些變量的使用,數據庫的操作等等,都會造成執行效率降低。 我之前也優化一個小program,主要從佔用內存(考慮一些變量的使用,有些變量是不合適的),以及logic 方面去著手優化,重新整理logic。還有既然你都用工具找到熱點了  那就更好優化了。重新看看自己的代碼吧!
      

  4.   

    不用的资源及时释放掉~
    推荐用using~
      

  5.   

    因为涉及到的程序代码很多,我就选一个贴一下吧
      for(int rpara=lowr;rpara<=topr;rpara++)
    {
           for(int cpara=lowc;cpara<=topc;cpara++)
    {
                   if (T2[cpara, rpara] > max) max = T2[cpara, rpara];
                     if (T2[cpara, rpara] < min) min = T2[cpara, rpara];
     }
     }
    例如这段该怎么优化?
      

  6.   

    1.使用EQATEC软件加壳
    2.运行夹克后的程序,运行到慢的地方,立刻退吹
    3.根据生成的xml查看每个函数的调用次数,执行时间,平均时间。找到消耗时间最多的。尝试优化。优化没有通用方法,具体问题具体分析。
      

  7.   

    搜索:
    EQATECProfiler
    EQATECTracer
      

  8.   

      for(int rpara=lowr;rpara<=topr;rpara++)
    {
      for(int cpara=lowc;cpara<=topc;cpara++)
    {
      if (T2[cpara, rpara] > max) max = T2[cpara, rpara];
      if (T2[cpara, rpara] < min) min = T2[cpara, rpara];
    }
     }
    这段代码我通过两个线程来执行,一个计算max,一个计算min在双核的cpu上是不是理论上能提高近50%?
      

  9.   

    int tmpValue = T[..,..];
    max = Math.Max(tmpValue,max);
    min = Math.Min(tmpValue.min);
      

  10.   

    for(int rpara=lowr;rpara<=topr;rpara++)
    {
      for(int cpara=lowc;cpara<=topc;cpara++)
    {
      if (T2[cpara, rpara] > max) max = T2[cpara, rpara];
      if (T2[cpara, rpara] < min) min = T2[cpara, rpara];
    }
     }
    这段代码能否通过多线程来加速?
      

  11.   


    这样的代码,如果单cpu,多线程反而会更慢,多核的cpu,只要替换一行即可
    System.Threading.Tasks.Parallel.For(lowr,topr,rpara)
    {
        for (int cpara = lowc; cpara <= topc; cpara++)
        {
            if (T2[cpara, rpara] > max) max = T2[cpara, rpara];
            if (T2[cpara, rpara] < min) min = T2[cpara, rpara];
        }
    }
      

  12.   

    System.Threading.Tasks.Parallel.For(lowr,topr,rpara)
    {
        for (int cpara = lowc; cpara <= topc; cpara++)
        {
            if (T2[cpara, rpara] > max) max = T2[cpara, rpara];
            if (T2[cpara, rpara] < min) min = T2[cpara, rpara];
        }
    }
    这种简单处理好像多核也是比单核花费时间吧