C#程序优化 热点知道,就是想知道一些vs中的优化技巧。例如在vc++2003中开启/G7可以使用SSE2优化,使用一维数组比二维数组快这些优化技巧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CLR会自动产生为特定平台优化的代码,包括特定指令集的优化。另外考虑使用C# 4.0,将程序并行化。实践表明,在一个4核心电脑上,这样做很容易提高2~3倍的速度。 金旭亮老师有一些入门的文章,你可以Google之。 沒有多線程的話,一般會是代碼問題,代碼的冗餘,以及一些變量的使用,數據庫的操作等等,都會造成執行效率降低。 我之前也優化一個小program,主要從佔用內存(考慮一些變量的使用,有些變量是不合適的),以及logic 方面去著手優化,重新整理logic。還有既然你都用工具找到熱點了 那就更好優化了。重新看看自己的代碼吧! 不用的资源及时释放掉~推荐用using~ 因为涉及到的程序代码很多,我就选一个贴一下吧 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]; } }例如这段该怎么优化? 1.使用EQATEC软件加壳2.运行夹克后的程序,运行到慢的地方,立刻退吹3.根据生成的xml查看每个函数的调用次数,执行时间,平均时间。找到消耗时间最多的。尝试优化。优化没有通用方法,具体问题具体分析。 搜索:EQATECProfilerEQATECTracer 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%? int tmpValue = T[..,..];max = Math.Max(tmpValue,max);min = Math.Min(tmpValue.min); 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];} }这段代码能否通过多线程来加速? 这样的代码,如果单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]; }} 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]; }}这种简单处理好像多核也是比单核花费时间吧 .net中HTML怎样转换为Text comboBox1_SelectedIndexChanged事件中comboBox1.SelectedValue取不到值! c#.net dicom控件 列表控件的Data Source问题 一个关于VS2005的小问题 大家都怎么做单元测试?都用什么工具? 哪位大虾解释一下static类型变量和一般变量的区别,谢谢! listview中图标不清晰 全部积分求软件设计方法 C#使用chart控件画折线图 在C#中怎样获取另一个程序的按钮,并触发这个按钮事件 C#控制台调用服务器ssis包问题
推荐用using~
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];
}
}
例如这段该怎么优化?
2.运行夹克后的程序,运行到慢的地方,立刻退吹
3.根据生成的xml查看每个函数的调用次数,执行时间,平均时间。找到消耗时间最多的。尝试优化。优化没有通用方法,具体问题具体分析。
EQATECProfiler
EQATECTracer
{
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%?
max = Math.Max(tmpValue,max);
min = Math.Min(tmpValue.min);
{
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];
}
}
这段代码能否通过多线程来加速?
这样的代码,如果单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];
}
}
{
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];
}
}
这种简单处理好像多核也是比单核花费时间吧