机器视觉

自由、创新、技术、经典

2013年11月30日 #

比较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)

2011年12月15日 #

学校的产品需要慎重对待

摘要: 经过几次和国内高校合作失败,得到这样的经验:社会上的商业产品,生存是其基本线,不只是实现功能,更要花费无数心血去提高竞争力。学校的产品,实现功能是其基本线,目标是为了论文,竞争力?Who care? 阅读全文

posted @ 2011-12-15 10:58 塞伦盖蒂之鹰 阅读(163) 评论(0) 推荐(0)

2010年1月13日 #

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)

2008年12月2日 #

枚举器,很简单,也很复杂

摘要: 实际工作中,遇到这样一个情况。我已经设计好了一个类,比如说是三角形类吧,有一些静态方法是针对三角形集合的,如下形式: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)

2008年10月11日 #

JTS快速多边形联合

摘要: JTS快速多边形联合2007年11月17日原文:http://lin-ear-th-inking.blogspot.com/2007/11/fast-polygon-merging-in-jts-using.html多边形联合(Union)是空间处理(SpatialProcessing,即WPS中的P)中常见的一项需求。在实际应用中,多边形可能相互覆盖、重叠,这增大了这项处理的难度。到目前位置,JTS中通过两种方法可以完成这一操作: 迭代联合(Iterated Union): 通过迭代所有多边形,一个一个地做联合获得结果 缓冲联合(Buffer Union): 把所有多边形作为一个... 阅读全文

posted @ 2008-10-11 21:11 塞伦盖蒂之鹰 阅读(1468) 评论(0) 推荐(0)

2008年10月5日 #

给.NET链表(LinkedList<T>)增加归并排序

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

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

2008年9月2日 #

浮点精度问题及解决方案

摘要: 关键字:Vector, float, precision, rounding algorithm最近在编写一个矢量运算库,将所有的平面CAD/CAM图形转化为矢量,采用树形组织:形状 -> 轮廓 -> 段,段有几种基本类型:直线,圆弧,Bezier等,在计算两个矢量集合的 交,并,减,异或操作时,遇到了严重的问题,该问题是由浮点数本身不精确造成的,例如:计算直线与圆弧的交点坐标后,反过来检查,你会发现,交点并没有落在直线上,或者交点到圆心距离并不相等。等等类似问题。并且该误差会随运算次数而累计。若用一个很小的阀值作为检查的附加条件,会带来大量的算法改动,并且在少数情况下还是会出错。 阅读全文

posted @ 2008-09-02 14:53 塞伦盖蒂之鹰 阅读(380) 评论(0) 推荐(0)

2008年1月20日 #

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)

2008年1月17日 #

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)

2007年12月26日 #

我看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)

导航