机器视觉

自由、创新、技术、经典

随笔分类 -  DotNet

比较C++和C#的一个性能问题
摘要:C++:只要你的代码正确,算法良好,你比较少关注性能问题,编译器会替你搞定绝大部分工作C#:你的代码正确,算法良好,你还得用工具去分析优化性能,JIT为了快速工作,很多优化工作没有深入开展。 手工优化的代码,看起来比较丑陋。 并且,有那么一些东西,无法优化到和Native一样的性能举例: 1、函数传递struct参数就无法内联,速度慢,单独传递struct成员变量就可以内联,速度快 2、操作符重载不内联,两个struct比较==,都是函数调用(OMG) 3、Math.Sin/Math.Cos/Math.Atan2等等都是函数调用,且比较慢4、不支持原生SIMD语法... 阅读全文

posted @ 2013-11-30 03:30 塞伦盖蒂之鹰 阅读(585) 评论(0) 推荐(0)

DotNet下GC的命门之一 --- 巨集合操作
摘要:如果算法结果或中间结果产生大量小对象的集合, 在GC中则会导致性能问题, 原因如下:1、小对象(<80k)分配时在Generation 0上,随着数量的增加, 会触发大量的垃圾收集2、垃圾收集时, GC会将他们搬移到Generation 1 heap上,这会带来性能损失, 相当于memcpy的成本3、修改集合内部每个对象指针,指向新地址,这个性能损失很严重,如果是LinkedList或Tree类型, 成本更高4、当Generation 1的heap不足时,GC会将他们从Gen1 heap搬移到Gen2 heap,上述2,3步再重复一遍5、当你用多线程提速时,GC的收集行为会锁住所有线程, 阅读全文

posted @ 2010-01-13 04:43 塞伦盖蒂之鹰 阅读(417) 评论(0) 推荐(0)

枚举器,很简单,也很复杂
摘要:实际工作中,遇到这样一个情况。我已经设计好了一个类,比如说是三角形类吧,有一些静态方法是针对三角形集合的,如下形式:class triangle{ // 顶点坐标 private point[] points; .... // 计算批量三角形的最大包含矩形 public static Rectangle CompMBR(List<triangle> ts); // 计算批量三角形的交点集合 public static List<Point> intersects(List<triangle> ts);}好了,现在需要派生一个类,假如说是等边三角形吧,我怎么设 阅读全文

posted @ 2008-12-02 17:28 塞伦盖蒂之鹰 阅读(300) 评论(0) 推荐(0)

给.NET链表(LinkedList<T>)增加归并排序
摘要:当你的数据结构是数组时,你可以选择上述任一种排序方法; 但当你的数据结构是链表时,归并排序比其它任何一种排序都要好。 这里介绍一种空间占用为O(1)的归并排序。 代码用了C#3.0的新特性-扩展方法(语法糖),若你用的是C#2.0,稍做改变即可。 阅读全文

posted @ 2008-10-05 07:38 塞伦盖蒂之鹰 阅读(2066) 评论(3) 推荐(0)

WPF尚不成熟,大型项目须慎重
摘要:这几天考虑将一个Winform项目切换到WPF下,增强用户体验。转换前先做了几个测试,结果发现不少问题。在微软论坛上逗留很久,不看不知道,一看吓一跳,WPF问题多多。列举几个我发现的问题:1、bitmap的缩放,内部插值算法定死,无法自定义,也无法关闭。2、Bitmap内部Raw数据的直接访问被关闭,要想访问必须采用Hacker的做法,非常麻烦。3、大型CAD项目或MapInfo项目,StreamGeometry类是工作重心,但根据我的测试结果,绘制20万个Line或Bezier曲线需要3分钟,性能有严重问题。微软的解释:10000个geometry就够多了,晕死,它的电子地图是买别的公司的吗 阅读全文

posted @ 2008-01-20 03:52 塞伦盖蒂之鹰 阅读(849) 评论(0) 推荐(0)

WPF==垃圾
摘要:我编写的项目中,经常需要将一幅图片进行缩放,同时保留细节以备观察,换句话说,就像在“画笔”中缩放一样。在Winform中,这不是问题,关闭绘图质量选项中的插样就可以了。但转移到WPF后,使用ScaleTransform放大后,细节就会丢失,WPF自动帮你插值(模糊)处理了,我整整找了三天,就是没办法关闭它,google上也看到很多这个问题的求助,但没一个人有解决办法。垃圾的WPF!==================上文写于2008-01-17,.net 3.0========今天试了一下.net 3.5 sp1,M$终于解决了这个问题:3.5 SP 性能改进之一:New “Nearest N 阅读全文

posted @ 2008-01-17 22:17 塞伦盖蒂之鹰 阅读(1194) 评论(3) 推荐(0)

我看WPF
摘要:前段时间,因为一个朋友公司的需要,把N年前用Delphi做的一个MIS系统拿出来使用,但遇到些第三方控件无处找寻的麻烦。想把它重写转为C# + SQL Server,代码倒好处理,都是面向OO的,但看到几十个界面DFM文件需要慢慢画,顿时头大,只好做罢。正好这两天在看WPF Unleashed, 个人认为,界面和代码分离,并不是新鲜事,但以往的界面,缺乏广泛支持和重用,例如早期VC的对话框Res文件,Delphi的DFM文件,C#的ResX文件。如果Xaml界面,能够在项目生命期内(5年以上吧),能被重用,或者翻新使用的话,也是件功德无量的事。 阅读全文

posted @ 2007-12-26 00:56 塞伦盖蒂之鹰 阅读(305) 评论(0) 推荐(0)

导航