文章标签 ‘性能’

SqlBulkCopy是.Net提供的一个可以讲一个表复制到数据库的解决方案,其性能相比INSERT方式插入数据库要快得多,但是,由于实现机制,只适用于多条数据同时插入数据表,不适用于其他操作。 因为是表复制操作,必须有一个数据源,(目标即我们的SqlServer数据库)我们可以讲数据加载到DataTable或可使用IDataReader实例的对象中方可操作。 为了方便操作我们先生成了一个实体类,方便数据库操作。 我们先看SqlCommand的数据插入代码: 下面是SqlBulkCopy的数据插入代码: 运行结果: 从结果上很容易看出,SqlBulkCopy要比SqlCommand方式插入数据快得多。 代码下载

2011年4月1日10:49 没有评论

WPF在绑定ItemsSource在使用Refresh()刷新方法时,绑定的集合会被重新创建并显示到UI控件上,这样,在性能上就会有非常大的影响,为了避免这种现象,我们必须要尽量少的使用Refresh()刷新控件。 比如,这种现象,当我们要显示大结果集的时候,如果绑定的是List<T>这种不支持集合更改特性的数据源时,我们增加或删除一个项时,结果并不会马上显示出来,这就是由于ItemsSource并不知道,其绑定的数据集发生了变化,我们需要手动执行ItemsSource的Refresh()方法,来刷新控件,这样就会造成,所有相关对象会重新创建,造成性能上巨大的损失。 为了,避免这个现象,有一个很好的方法,就是使用ObservableCollection<T>这个集合来代替List<T>,这样,我们再增加或删除某一个项的时候,不需要使用Refresh()方法强制刷新控件,相关的更改就会显示在UI控件上,WPF则只会重新创建或删除该项,其他项则不会参加重新创建的操作,这样性能就会得到很大幅度的提升。 推荐在数据绑定的时候使用ObservableCollection<T>这个集合。

2010年9月14日13:08 1 条评论

提到ASP.NET性能问题,总是听到很多新手说ASP.NET的性能如何如何不好,只能说这些人并没有深入了解ASP.NET架构,不知道如何做才能提高ASP.NET的性能。 1.尽量少用ASP.NET控件 这个是ASP.NET最具争议的问题,我们知道ASP.NET控件会生成大量的ViewStat,这个其实是ASP.NET的一个特性,这个特性可以大幅度的提高我们的开发速度,只是在性能上会有一定的损失。为什么会这样?我们首先要了解ASP.NET控件原理,当我们访问一个ASP.NET页面的时候,服务器端会将页面上所有的控件中的一些交互属性放到隐藏表单域上,以便当我们回传页面的时候这些属性可以再次使用,大量的属性造成了页面的臃肿,提交数据也会变得异常庞大,这个就是导致ASP.NET控件在性能上的根本原因。 解决办法,就是我们要尽量少用或者不用asp.net控件,放弃回调方法,用请求–>响应的最基本的网页处理流程,于此同时,我们还要禁用页面中的ViewStat和runat=”server”的属性。这个时候,我们在打开页面或提交请求,页面会变的清爽的多。 2.尽可能的使用缓存 对于那些我们经常使用的数据、迭代输出的内容,我们一定要使用缓存,这个也是新手经常不注重的事情,ASP.NET给我们提供了很好的缓存方式,我们可以充分利用这一点,大大提高我们的ASP.NET应用程序的性能。 3.尽量使用存储过程 存储过程是存储在服务器上的一组预编译的SQL语句。存储过程具有对数据库立即访问的功能,信息处理快,使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。 4.不要使用DataSet作为数据源 应用程序的性能90%来源于磁盘I/O操作,提高数据库的读取能力,可以直接提高系统的性能。我们在读取数据的时候,请使用SqlDataReader,返回集合的方式,这样做会比DataSet性能要高很多。 5.服务器跳转 使用Service.Transfer()来跳转,Response.Redirect()方法的跳转,属于客户端跳转,是页面发送给客户端一个跳转请求,客户端再请求要跳转的页面完成跳转操作,Server.Transfer()则是直接的服务器端的跳转。 6.尽可能的少使用代码中的异常 代码中创建异常对象会消耗大量资源,我们要尽量少使用代码中的异常处理。 7.细节方面 细节方面我们也要注意,如我们在处理很多字符串连接操作时,我们应使用StringBuilder,字符串连接不多的时候,使用+=就可以了。判断空字符串时用string.IsNullOrEmpty()方法,比较字符串使用Compare,应用程序的设置信息使用序列化存放成xml文件。

2010年1月18日14:26 1 条评论