摘要: 在我公开测试结果之后,有朋友也进行了其他测试。在测试中我使用的是int数组,经过分析之后我们了解到Array.Sort<T>对于int数组有特殊的优化。于是,某些朋友使用了一些引用类型的数组进行排序,得到Array.Sort<T>方法的性能落后于LINQ排序——虽然由于测试方式的问题,这个结果和结论都不太妥当。不过在讨论的过程中,我们都意识到了一个问题:在其他条件不变的情况下,引用类型的字段越多,Array.Sort<T>方法所需时间就越久。这次我们就来讨论一下这个问题。性能测试为了体现字段数量和排序时间的相关性,我们首先来构造一个方法,它可以使用Emit生 阅读全文
posted @ 2012-07-04 16:52 望江南 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 经过前两篇文章的分析,我们已经了解了Array.Sort<T>与LINQ排序两种实现方式的差别:前者直接比较两个元素的大小,而后者先选出每个元素的“排序依据”再进行比较。因此,虽然后者需要相对较多的“周边工作”,但由于每次比较时都可以仅仅使用高效的基础类型(如int),因此从整体来看,两者的性能高低难以辨别。不过,既然我们已经了解LINQ排序“高效”的原因,又能否将其利用在数组排序上呢?程序是人写的,此类问题大都有肯定的答案。那么我们现在就来实现一下。API设计关于这个问题,我设想过几种API使用与设计方式。例如,我起初想使用“标准”的扩展方法:Person[] people = 阅读全文
posted @ 2012-07-04 16:44 望江南 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 上次我们分析了Array.Sort<T>方法的实现方式,并了解到类库会为一些特例而使用高性能的排序方式——int数组便是这样一例,因此从测试结果上来看其性能特别高。不过从数据上看,即便是在普通的情况下,Array.Sort<T>的性能也比LINQ排序要高。不过也有朋友从测试中得出的结论正好相反,这又是为什么呢?那么现在,我们再来分析一下LINQ排序的实现方式吧,希望这样可以了解到两者性能差别的秘密。只可惜,LINQ排序的代码在System.Core.dll程序集中,微软没有发布这部分源代码,我们只得使用.NET Reflector来一探究竟了。LINQ排序接口的定义、使 阅读全文
posted @ 2012-07-04 16:21 望江南 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 昨天我们比较了Array.Sort<T>方法与LINQ排序的性能,知道了LINQ排序的性能以较大幅度落后于Array.Sort<T>方法。而对于Array.Sort<T>来说,性能最高的是其中使用Comparer<int>.Default作为比较器的重载方法。在前文的末尾我们做出了推测:由于排序算法已经近乎一个标准了(快速排序),因此从算法角度来说,Array.Sort<T>方法和LINQ排序上不应该有那么大的差距,因此造成两者性能差异的原因,应该是具体实现方式上的问题。下载.NET框架的代码既然是比较实现的区别,那么阅读代码是很直接 阅读全文
posted @ 2012-07-04 15:50 望江南 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 昨天有朋友写了一篇文章,其中比较了List<T>的Sort方法与LINQ中排序方法的性能,而最终得到的结果是“LINQ排序方法性能高于List<T>.Sort方法”。这个结果不禁让我很疑惑。因为List<T>.Sort方法是改变容器内部元素的顺序,而LINQ排序后得到的是一个新的序列。假如两个排序方法的算法完全一致,LINQ排序也比对方多出元素复制的开销,为什么性能反而会高?如果LINQ排序的算法/实现更为优秀,那为什么.NET Fx不将List<T>.Sort也一并优化一下呢?于是今天我也对这个问题进行了简单的试验。注意事项在后面的评论中有人说 阅读全文
posted @ 2012-07-04 13:52 望江南 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 分页有很多控件之类的~~~现在暂时发个临时版,可以用来扩展为控件之类的,懒的扩展了#region 分页 int total = (int)Math.Ceiling(pageCount / (double)pageSize); string url = "/sitemap-" + type.ToString().ToLower() + "-" + "{0}" + ".html "; if (total == 1) { PageIndexHt... 阅读全文
posted @ 2012-07-04 11:34 望江南 阅读(395) 评论(2) 推荐(0) 编辑
摘要: 老规矩,先上html和css,还是用官方的,只是去掉了些东西。htmlView Code <!DOCTYPE html><html><head><title>jQuery Tools standalone demo</title><!-- include the Tools --><script src="http://cdn.jquerytools.org/1.2.7/full/jquery.tools.min.js"></script><link rel="s 阅读全文
posted @ 2012-07-04 11:30 望江南 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 先给个官方例子。可以先弄出来看看效果htmlView Code <!DOCTYPE html><html><!--This is a jQuery Tools standalone demo. Feel free to copy/paste.http://flowplayer.org/tools/demos/--><head><title>jQuery Tools standalone demo</title><!-- include the Tools --><script src="http 阅读全文
posted @ 2012-07-04 10:51 望江南 阅读(1679) 评论(0) 推荐(0) 编辑
摘要: 学习jQuery,相信很多人都知道jQuery-ui。对于个人快速开发而已还不错,但是很多时候,项目中的css都是有界面组提供的,那里的css样式都是用他们提供的样式。那么jQuery-ui就很难用的上了,或者说可以的ui控件就很少,我个人而已就只是用的他时间控件。 ExtJS框架,这个虽然提供了不错的UI框架,但是真的对于可以对一些公司来说,他过于“臃肿”。之前面试前程无忧的时候,他们就告诉过我,很多公司他们用的IE6.0,而且公司有各种防火墙。这样回导致一些js无法转载。 jQuery-tools--一种基于jquery的UI表现框架。他仅仅只有191KB,小巧。该框架提供了tab... 阅读全文
posted @ 2012-07-04 10:17 望江南 阅读(531) 评论(0) 推荐(1) 编辑