- 1、本文档共114页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[BBservice]159.Windows用户态程序高效排错.熊力.[zh-cn].pdf
Windows 用户态程序高效排错——思路、技巧、案例和方法
2 第1 章 比工具、技巧和经验都重要的是你的思考——从四个风格迥异的案例说起
第 1 章
比工具、技巧和经验都重要的是你的思考
——从四个风格迥异的案例说起
首先跟大家分享导师Parker 给我的一个问题:
镜子里面的像,为什么左右是反的而上下不是?
我问过很多朋友这个问题,很少有人能够在3分钟内给出准确答案。这里列举出一些
比较奇特的想法:
1. 因为人的眼睛是左右对称的。(也是某“面试宝典”中的答案)。
2. 如果把镜子横过来,左右不反了,上下却反了。
3. 因为我们在北半球。
从技术层面上说,这里涉及的知识点只有镜面反射,远比Windows 内存管理简单。但
是要回答清楚,却不是信手拈来那么简单。这个例子只是想说明,除了知识以外,解决问
题需要清晰的思路。
1.1 绝望的性能问题:ADO.NET 2.0 竟然比1.0 要慢
1.1.1 问题描述
根据下面一篇文章的介绍,客户决定升级到.NET Framework 2.0 来借助ADO.NET 2.0
提高性能。
Windows 用户态程序高效排错——思路、技巧、案例和方法
1.1 绝望的性能问题:ADO.NET 2.0 竟然比1.0 要慢 3
DataSet and DataTable in ADO.NET 2.0
/msdnmag/issues/05/11/DataPoints/default.aspx
但是根据用户的测试,使用ADO.NET 2.0 后,性能反而下降。
拿到用户的代码一看,非常简单:
OracleConnection conn = new OracleConnection();
conn.ConnectionString = ...;
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
OracleDataAdapter dap = new OracleDataAdapter(select * from mytesttable,conn);
DataTable dt = new DataTable();
DateTime start = System.DateTime.Now;
dap.Fill(dt);
TimeSpan span = DateTime.Now - start;
conn.Close();
Console.WriteLine(span.ToString());
Console.WriteLine(The Columns.Count is + dt.Columns.Count.ToString());
Console.WriteLine(The Rows.Count is+dt.Rows.Count.ToString());
测试用的数据库表也很简单,25 万行数据,4 个字段。通过检查span.ToString 的结果,
发现同样的代码,ADO.NET 2.0 比1.1 多用了近一倍的时间。dap.Fill 方法的执行时间从原
来的3 秒增加到6 秒。
1.1.2 悲观和绝望
应该如何着手解决这个问题?
我测试完成,看到这个结果后,我的感觉:悲观。看看我们能够做什么:
1. 后台数据库表格的定义非常简单。4 个字段都是int,都是在没有index 、primary ke
文档评论(0)