黎波

Windows Mobile Development for Line of Business
posts - 186, comments - 1266, trackbacks - 43, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
减少方法调用
    this.textBox1.Location = new Point(10,20);
    
this.textBox1.Size = new Size(72,23);
换成
    this.textBox1.Bounds = new Rectangle(10,20,72,23);

不要把子控件加到父控件的Controls集合,通过Parent来控制
// Before optimization
// Create a new panel and textbox control

Panel panel1 = new Panel();
TextBox textBox1 
= new
 TextBox();
// Set the Text property of the TextBox control

textBox1.Text = "My Text";
// Add the TextBox to the Panel's control collection

panel1.Controls.Add(this.textBox1);
// Add the Panel to the Form's control collection

this.Controls.Add(panel1);
... 
// Add subsequent controls here
换成
// After optimization
// Create a new panel and textbox control

Panel panel1 = new Panel();
TextBox textBox1 
= new
 TextBox();
// Parent the Panel to the current Form

this.panel1.Parent = this;
// Parent the TextBox to the Panel

this.textBox1.Parent(this.panel1);
// Set the Text property of the TextBox control

textBox1.Text = "My Text";
... 
// Add subsequent controls here

听说使用这两个方法修改窗体设计器生成的代码后,可以提高55%的窗体加载性能。不过,这样修改后的窗体,是否还能再用窗体设计器编辑?有多少人愿意这样做?

参考:
改进基于 Microsoft .NET Framework 精简版应用程序窗体的加载性能
Improving Microsoft .NET Compact Framework-based Application Form Load Performance

Feedback

#1楼    回复  引用    

2007-01-31 14:07 by zz [未注册用户]
还有一个提高性能的方法:
在一个窗体中如果定义一个窗体级对象,如SqlConnection cn=null;
方法调用时用cn=new SqlConnection();然后Close()这样性能有点低,
如果改为每个窗体的方法体内:SqlConnection cn=new SqlConnection()的话,性能会提高....怪事

#2楼    回复  引用  查看    

2007-01-31 14:13 by LIVE      
好像还可以在窗体设计器上编辑吧。的确,这样做可以提高不少性能哟。一个人之见,.net CF1.0太差了,有很多bug,就连最常见的空间都有,比如comboBox

#3楼 [楼主]   回复  引用  查看    

2007-01-31 14:14 by Bob Li      
@zz
请问你说的是.NET Framework还是.NET Compact Framework?
因为.NET Compact Framework很少有人会直接访问SQL Server,都是访问SQL Server CE,用到的是SqlCeConnection。

#4楼 [楼主]   回复  引用  查看    

2007-01-31 14:35 by Bob Li      
@LIVE
不过现在很多机子自带是v1.0的,为了部署方便只好采用v1.0。
现在v3.5 CTP都有了,增加了一些新东西...

#5楼    回复  引用  查看    

2007-01-31 17:40 by LIVE      
@Bob Li
那倒是,即使时SP1出来了,我也没有使用它,因为部署起来实在是个大麻烦,PPC这种玩意又不像台式电脑,要是一断电,所以东西都over,那个时候叫天天不应的了。

#6楼    回复  引用  查看    

2007-01-31 17:42 by LIVE      
还有netcf1.0的效率实在是不怎么样,不管是他自身还是访问数据库,和XML文件,满的跟头蜗牛似的,和eVC比起来,不是一个级别上的

#7楼 [楼主]   回复  引用  查看    

2007-01-31 18:10 by Bob Li      
@LIVE
看来你受尽了.NET CF 1.0的折磨啊^_^
听说v2.0在性能方面有所提高,不知道是不是真的?
Native的程序启动很快,Managed的程序要载入CLR,所以很慢。

#8楼    回复  引用  查看    

2007-02-01 00:58 by yunhuasheng      
不错啊,这么小的地方都能发现!!

#9楼    回复  引用  查看    

2007-02-01 11:07 by LIVE      
@Bob Li
我花了很多时间做netcf优化。像这种控件加载,可以提高一倍的效率。至于类似sqlce以及其他方面的,效果尤为明显!

#10楼 [楼主]   回复  引用  查看    

2007-02-01 11:13 by Bob Li      
@LIVE
期待你的总结啊!让大家学习学习!

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-03-17 19:23 编辑过


相关链接: