消除不可达代码

另一个窥孔优化的机会是消除不可达的指令。一个紧跟在无条件跳转之后的不带标号的指令可以被删除。通过重复这个运算,就可以删除一个指令序列。比如,为了调试的目的,一个大型程序中可能含有一些只有当变量debug等于1时才运行的代码片断。在中间表示形式中,这个代码看起来可能就像

if debug == 1 goto L1
goto L2

L1: print debugging information
L2:

一个显而易见的窥孔优化方法是消除级联跳转指令。因此,不管debug的值是什么,上面的代码序列可以被替换为:

消除对脚本引擎的依赖性

ASP是使用Active Scripting建立的,Active Scripting是这样的一个技术,它最初设计用于使网站建设开发人员能够以一种统一的方式来编写和控制应用程序。它不是一种真正设计用来编写完整应用程序的技术,而编写完整的应用程序正是开发人员努力使用ASP的根本目的所在,这也就解释了为什么ASP.NET不使用Active Scripting来编写。

Active Scripting有许多固有的问题:代码是经过解释而不是经过编译的、它有一个较差的类型系统、它支持方法的后期绑定调用、每个动态脚本引擎的案例都要消耗内存等。作为一个ASP开发人员,可能早就意识到这些问题,并且在开发或初步设计自己的应用程序时也碰到过这些问题。解释代码只能导致很平庸的性能。一个不好的类型系统只会让代码更加难以开发、阅读和调试。而后期绑定代码要比早期绑定代码慢许多倍,并且会限制所能使用的组件。可能我们编写了大量COM组件来解决这些问题,但即使是这种解决办法也隐含地存在性能和维护上的问题。而且从ASP中创建COM对象本身就代价相对较大,同时如今升级COM组件通常意味着要停止web服务器。

«1»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.