请教一下代码书写问题,哪个执行效率更高?
1.下面代码中,是否 test2 比 test1,而 test4 比 test3 执行的效率更高?2.test4 中,当第二次给 dt 赋值时,是否先释放先前占用的内存?
懂的朋友分享一下,不要只回答 yes or no.
namespace MyNet.Test--------------------编程问答-------------------- 理论上坐在火车靠前车厢的乘客比后排的更早到达目的地。因此你买火车票一定要买最前面车厢的,那样你就赚大发了! --------------------编程问答-------------------- (对于console工程)你可以这样打印一下测试结果
{
public partial class WebForm3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Test1();
Test2();
Test3();
Test4();
}
private void Test1()
{
int RecordCount = 0;
string strSQL = "select * from news";
DataTable dt = BusinessSystem.GetDataSet(strSQL, out RecordCount).Tables[0];
if (RecordCount > 0)
{
for (int i = 0; i < RecordCount; i++)
{
string field1 = dt.Rows[i]["field1"].ToString().Trim();
string field2 = dt.Rows[i]["field2"].ToString().Trim();
//业务处理..
}
}
}
private void Test2()
{
int RecordCount = 0;
string strSQL = "select * from news";
DataTable dt = BusinessSystem.GetDataSet(strSQL, out RecordCount).Tables[0];
if (RecordCount > 0)
{
string field1 = "";
string field2 = "";
for (int i = 0; i < RecordCount; i++)
{
field1 = dt.Rows[i]["field1"].ToString().Trim();
field2 = dt.Rows[i]["field2"].ToString().Trim();
//业务处理..
}
}
}
private void Test3()
{
int RecordCount1 = 0;
string strSQL1 = "select * from news where type = 1";
DataTable dt1 = BusinessSystem.GetDataSet(strSQL1, out RecordCount1).Tables[0];
if (RecordCount1 > 0)
{
//业务处理1
}
int RecordCount2 = 0;
string strSQL2 = "select * from news where type = 2";
DataTable dt2 = BusinessSystem.GetDataSet(strSQL2, out RecordCount2).Tables[0];
if (RecordCount2 > 0)
{
//业务处理2
}
}
private void Test4()
{
int RecordCount = 0;
string strSQL = "select * from news where type = 1";
DataTable dt = BusinessSystem.GetDataSet(strSQL, out RecordCount).Tables[0];
if (RecordCount > 0)
{
//业务处理1
}
strSQL = "select * from news where type = 2";
dt = BusinessSystem.GetDataSet(strSQL, out RecordCount).Tables[0];
if (RecordCount > 0)
{
//业务处理2
}
}
}
}
var lst = new List<Action> { test1, test2, test3, test4 };--------------------编程问答--------------------
var rnd = new Random();
var testcases = (from x in lst
from n in Enumerable.Range(0, 100)
select x).OrderBy(x => rnd.Next()); //随机排序,每个测试重复100次
(from x in testcases
let r = new { testcase = x, tm = Run(x).TotalMilliseconds }
group r by r.testcase into g
select new { testcase = g.Key, tm = g.Sum(y => y.tm) / 100 })
.ToList()
.ForEach(x => Console.WriteLine("测试用例 {0} 用时 {1} 毫秒", x.testcase.GetType().Name, x.tm));
private static TimeSpan Run(Action x)--------------------编程问答--------------------
{
var st = new Stopwatch();
st.Start();
x();
st.Stop();
return st.Elapsed;
}
test1跟test4中的局部变量dt根本没有任何关系。 --------------------编程问答--------------------
好深奥的比喻.. --------------------编程问答--------------------
不是,我是指 test3() 中,定义了 dt1 和 dt2,是不是比 test4() 写法中只定义一个 dt 占用的内存多。 --------------------编程问答-------------------- 没事最好不要乱设置变量,特别是代码多的情况下,能设置局部最好只设置局部,否则到时肯定会出乱子 --------------------编程问答--------------------
没事最好不要乱设置变量,特别是代码多的情况下,能设置局部最好只设置局部,否则到时肯定会出乱子
我说的是性能方面的问题, 代码多少有什么关系呢.. 我就想知道怎样定义,效率会更高些,可能代码少的时候效率都差不多,但是功能复杂时,就需要注意这些细节了.. --------------------编程问答-------------------- test1跟test2的区别是test1提前定义了两个空字符串,test2是在用的时候才定义的字符串。 --------------------编程问答-------------------- test1跟test2的区别是test1提前定义了两个空字符串,test2是在用的时候才定义的字符串。
test3与test4的却别是test3用了两个int类型的变量记录总数,test4是用了一个。。 --------------------编程问答-------------------- 这个性能上真的差不了什么,如果真的写比较复杂的东西,性能方面的瓶颈一般也不会是这些的。还不如去百度一下提高网站性能出来的东西呢。
补充:.NET技术 , ASP.NET