许多开发过Android的程序员,表示WP7比Android流畅,再给你大家透露些微软为了掩盖.Net运行缓慢的例子。
1. WP7 SDK提供的默认工程,都有一个启动的封面图片,默认文件名为SplashScreenImage.jpg这个图片,一般系统自带的应用为EXE格式由于使用PE加载器以Native直接处理ARM指令自然快,而第三方软件一般进入时都有一个欢迎屏就是为了掩盖托管语言的高效开发,低效运行等问题。
2. 同时在很多方面微软WP7优化的并不是说比Google的Android好,微软限制了后台应用的运行,比如最多不会超过5个目前在WP7.5 Mango上,所谓的第三方后台运行是通过Background Agent实现的,分为即时和资源敏感型,如果你的应用需要长期运行,就必须将这部分逻辑封装为一个Dll最终由WP7系统代理运行,和你的主应用其实工作在不同的空间,因为你的应用和后台代理虽然均为Dll但仍然独立。你的应用可能被结束了,而后台代理那个dll可能仍然还在工作,但是限制十分苛刻,比如说内存占用不能超过5MB,否则随时被结束掉,很多API无法使用等。Android有时候不流畅主要由于小RAM的设备了,过多的后台应用导致的,当然也有很多劣质的应用拖了Android的后腿。
3. 编码处理,WP7和Android应用对应xap和apk虽然均为zip压缩,但Android在清单文件上做了二进制的编译达到了性能提升,而wp7仍然为xml原本的xaml文件,除了运行效率低下外,应用的安全性存在着很大的隐患。不过由于WP7软件开发较简单,一般如果不是游戏类应用或算法涉及不敏感的可以不用考虑代码混淆,毕竟.Net的门槛太低了。同时Google Dalvik VM这个Java虚拟机上的类库功能强大型,至少是目前WP7.5 Silverlight4的20倍还多在功能上。随着WP7功能的增加,可能Java VM比.NET Runtime效率更高。
4. 由于WP7应用过多的依赖于Silverlight,内部的Uri传递竟然使用字符串这样的形式,同时界面.xaml文件和cs或vb文件实现了MVC,但在Android上我们通过Intent可以封装复杂的类型甚至是多维的字节数组,这也导致了代码混淆时Java依赖于Package Name,而WP7依赖于绝对的路径,产生更复杂的情况。
5. WP7运行的高效其实得益于微软严格的限制,就是界面要十分简单,无法实现复杂的效果,如果Android运行同样的简单界面性能会不俗,而Android当CPU和RAM于WP7相同时,基本上以临界点1GHz的A8和512MB的RAM或更高来看,同样的处理量Android远比WP7高效,在UI部分Silverlight的Bug就更多了,内部的实现方面其实比Android更臃肿复杂,很多国内用户感觉Android体验差,主要是国产山寨机或低端机使用ARM11这样的CPU,小于512MB的RAM还捆绑了一堆垃圾后台应用造成的。
总之,微软今天仍然无视开发者体验,仅仅凭借IDE方面VS2010比Eclipse有优势,实在是太坑爹了,不苛求Mac OS版的WP7 SDK,连WinXP都无法很好的兼容,微软的层层限制早晚会让开发者感觉这个系统不爽程度不亚于iOS。
网友评论